2012-11-12 14 views
11

Benim işlevini içerir çalışmıyor. Tetikleyicinin (onOpen) da ayarlandığını doğruladım. Sadece bir kullanıcı Tools, Script Manager, Run'a girdiğinde çalışır. Bunun nasıl yapılacağını bilmek için çok fazla geçmişe sahip çok kullanıcımız var. Neden çalışmıyor? (Kullanma Krom)fonksiyon onOpen() belgeye bir menü ve tost ekleyerek

function onOpen() 
{ 
    var menus = [{name: "Advance in Workflow", functionName:"sendEmail"}]; 

    SpreadsheetApp.getActiveSpreadsheet().addMenu("Auto Advance FG Workflow", menus); 

    //sheet.toast(Notify/Remind users); 
    sheet.toast("While you are here we kindly ask that you do not add, modify or remove  any columns.","Welcome - " + username,8); 
} 

sayesinde

+0

Bu gerçek kod mi? 'Kullanıcı adı' nereden geliyor? –

+0

Bu gerçek koddur. Komut var var boyunca tanımladı. aşağıdaki gibi işlev onOpen önce, kullanıcı adı tanımlanır. var adı = Session.getActiveUser() GetUserName(); – user1817058

+0

Sorununuzu çözdünüz mü? –

cevap

0

sorun "levha" tost başarısız neden olan, tanımlanmamış olmasından kaynaklanıyor olabilir gibi görünüyor.

+0

Sayfa, işlevden önce tanımlanmıştır: var sheet = SpreadsheetApp.getActiveSpreadsheet(); Fonksiyonun içinde olması gerekmiyor mu? Otomatik olarak görünmüyor gibi tost başarısızlık kadar önemli değil ... – user1817058

25

Ben aynı sorunu yaşıyordu.

Bazen, Google'ın betiklerin bir çeşit önbelleğini oluşturduğunu fark ettim (eskiden "test" betiğine sahibim ve genellikle içeriğini değiştiririm ve bazen betik sanki çalışmamış gibi çalışır) .

Yani, ne yaptığını onOpen çözdüğünü() fonksiyonu adını değiştirmenin ve elle bir tetikleyici ading oldu çalışmıyor.

Go to "Resources -> Current script's triggers…"

Git "Kaynaklar -> Mevcut komut dosyasının tetikleyicileri ..."

Choose the function to run on open

Burada bir cazibe gibi çalıştı

açık çalıştırmak için işlevi seçin !

+0

+ 1 Bu benim durumumda sorunu çözdü. – chrisdillon

+2

Kendi numaramı denedim ve sorunu çözmedi. Sadece fonksiyonların içinde olmayan tüm değişkenleri kaldırdıktan sonra işe yaradı ... Bilmiyorum, neden, ama sorunu çözdü. –

+0

İyi düşünme batman – PowerAktar

8

Bu eski bir yazı olduğunu ama sadece bu sorunu vardı ve benim durumumda düzgün çalışmıyor nedenini öğrenmek: bazı yetkileri gerekli bir değişken dosyasını Senaryomun üstündeki vardı ve o senaryoyu engelledi doğru çalıştırmak için. OP'in var username = Session.getActiveUser().getUsername(); (yetkilendirmeyi gerektirdiğini ve bunun nedeni olabilir) olduğunu gördüm.

örn:

function onOpen(){ 
    SpreadsheetApp.getUi() 
    .createMenu("Exportation") 
    .addItem("Lancer l'exportation", "exportationMenu") 
    .addToUi(); 
} 
var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant"); 

ama bu çalışacaktır: Bu kod çalışmayacaktır referans hata oluştu Benim durumumda

function onOpen(){ 
    SpreadsheetApp.getUi() 
    .createMenu("Exportation") 
    .addItem("Lancer l'exportation", "exportationMenu") 
    .addToUi(); 
} 

function whatever(){ 
    var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant"); 
...} 
2

, o süre senaryoyu durmadı tamamen, menüden görünmesini durdu.

Ben sadece senaryo üzerinde bir hata ayıklama çalıştırdıktan sonra bu hatayı tespit edebildi.

Google script debug option