2016-08-01 152 views
1

我試圖做一個腳本來發送電子郵件,兩個條件後每天發送一封電子郵件。如果第一個條件爲真,則電子郵件的數據將爲「subject1」,否則爲「subject2」。腳本sendNotification不能正常工作

當我手動運行腳本時,該腳本正常工作,但是,通過觸發器,我想通過電子郵件發送的值完全不會出現在主體中。

我不明白什麼可能是錯誤的,如果手動,完美的作品。 觸發器是「時間驅動/小時/每12小時」。 任何人都可以幫助我嗎?

這是代碼:

function sendNotificationD() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var cell = ss.getActiveCell().getA1Notation(); 
    var cellvalue = ss.getActiveCell().getValue().toString(); 

    var column = ss.getRange('o13'); 
    var cell = sheet.getRange('o13'); 
    var value = column.getValue(); 
    var emailSheet = ss.getSheetByName("totais"); 
    var emails = emailSheet.getRange("q1:s1").getValues(); 

    var range_bill_com = sheet.getRange('o13'); 

    if (range_bill_com.getValue() !='CONGRATS'){ 
    var recipients = emails; 
    var message = ''; 
    var subject = 'subject1 here'; 
    var body = 'IMPORTANT: ' + '\n\n' + 'your goal is' + ' ' + value; 
    MailApp.sendEmail(recipients, subject, body); 
    } 

    if (range_bill_com.getValue() =='CONGRATS'){ 
    var recipients = emails; 
    var message = ''; 
    var subject = 'subject2 here'; 
    var body = 'you have reached your goal'; 
    MailApp.sendEmail(recipients, subject, body); 
    } 
}; 
+0

如果您正在從觸發器運行該功能,請嘗試按名稱明確設置工作表,而不是獲取活動工作表。 –

回答

2

在該行:

var sheet = ss.getActiveSheet(); 

getActiveSheet()獲取當用戶打開它正被顯示在電子表格中的用戶界面的活動工作表的方法,但當它從時間驅動的觸發器運行時,沒有活動工作表,因此您需要指明工作表,可以使用getSheetByName()getSheets(),該行應該看起來像這樣:

var sheet = ss.getSheetByName("Sheet1"); 

var sheet = ss.getSheets()[0]; // Index of the tab, 0 will return the first one 

如果手動或觸發啓動它的功能仍然可以工作。

+0

謝謝!!!!它現在完美無缺! –