我正在尝试制作一个脚本,以便在检查电子表格后,每天发送一封电子邮件,这两个条件。如果第一个条件为True,则电子邮件的数据将为“subject1”,否则为“subject2”。
当我手动运行时,脚本可以正常工作,但是,通过触发器,我想通过电子邮件发送的值,根本不会出现在正文中。
如果手动操作完美,我无法理解可能出现的问题。 触发器是“时间驱动/小时/每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()获取当用户打开时在电子表格UI中显示的活动工作表,但是当它从时间驱动的触发器运行时没有活动工作表,因此您需要指示在工作表中,您可以使用getSheetByName()或getSheets()该行应如下所示:
var sheet = ss.getSheetByName("Sheet1");
或
var sheet = ss.getSheets()[0]; // Index of the tab, 0 will return the first one
如果您手动或从触发器触发该功能,该功能仍然有效。