2016-08-01 125 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

谢谢!!!!它现在完美无缺! –