2012-05-11 61 views
2

你好,你堆棧溢出罰款。谷歌電子表格時間驅動事件不會觸發

我寫了一個小腳本,它從電子表格中拉出報價並通過電子郵件發送給用戶。這個想法是,腳本每天運行一次,將電子表格中的下一個報價拉到電子郵件地址。

腳本是這樣的:當我手動運行它

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 1000; // Number of rows to process 
    var dataRange = sheet.getRange(startRow, 2, numRows, 3); 
    var data = dataRange.getValues(); 
    for (i in data) { 
    var row = data[i]; 
    if(row[2]=="yes") { 
     continue; 
    } 
    var emailAddress = "[email protected]";  // email to send to 
    var message = '"'+row[0]+'"'+"\n\n"+"- "+row[1];  // Second column 
    startRow = parseInt(startRow)+parseInt(i); 
    var subject = ""; 
    MailApp.sendEmail(emailAddress, subject, message); 
    sheet.getRange(startRow,4).setValue("yes"); 
    SpreadsheetApp.flush(); 
    break; 
    } 
} 

該腳本工作正常。

現在我添加了一個腳本觸發,看起來像這樣:

sendEmails |時間驅動| Day Timer |晚上7點到晚上8點

不幸的是,該函數沒有執行並且報價沒有被髮送。

我對理解時間驅動觸發器也有點問題。 「晚上7點到晚上8點」是什麼意思?在隨機時間的兩個小時之間一次?

如果我不必登錄Google文檔,該腳本纔有意義。也許我在這裏完全誤解了一些東西......如果我登錄Google文檔,腳本是否可用? (但即使我是,截至目前,腳本也不會使用Time-Driven觸發器執行)。

我非常感謝您對此的看法。 Moritz

回答

2

從定時器/事件運行腳本時,沒有「ActiveSpreadsheet」。而不是使用.getActiveSpreadsheet()使用.openById()

您不需要在Google Docs中(甚至根本沒有進行身份驗證)腳本觸發器可以成功運行。

此外,這將有助於(特別是在調試時)使用即時通知腳本失敗。在設置計時器的地方,點擊通知鏈接進行設置。

+0

非常感謝。實際上它可以和.getActiveSpredsheet()一起工作,現在定時器也可以工作。由於時區的不同,它只有一個小時的時間。 – user1389974

0

除了從mzimmerman

回答我也有一點了解的時間驅動觸發的問題。 「晚上7點到晚上8點」是什麼意思? 這意味着您的腳本將在下午7點到8點之間的任意時間執行,但根據我的觀察,它會在晚上7點後執行。

+0

感謝您的幫助。 – user1389974

相關問題