我有一段代码,用于每8周向google工作表中的地址列表发送一次重复的电子邮件。它似乎没有发出邮件。
我尝试了在网上找到的各种例子,但都没有成功
ScriptApp.newTrigger("sendEmails")
.timeBased()
.onWeekDay(ScriptApp.WeekDay.THURSDAY)
.atHour(11)
.nearMinute(00)
.everyWeeks(8)
.create();
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EMAILS")
var startRow = 2;
var numRows = sheet.getRange(1,4).getValue();
var dataRange = sheet.getRange(startRow, 1, numRows, 2)
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0];
var message = row[1];
var subject = "mail subject here";
MailApp.sendEmail(emailAddress, subject, message);
}
}
当我手动运行脚本时,它似乎工作得很好,所以我猜问题出在新的触发器部分?
发布于 2019-07-04 17:51:31
问题:
目前您已经准备好了代码,但它根本不会被使用,因为它不是函数的一部分。
要求:
触发以每8周运行一次代码。
解决方案:
将触发器构建器分离到一个单独的函数中。
运行以下脚本,它将删除您可能意外设置的任何触发器,并创建一个新的触发器,该触发器将按照您的预期运行。
function newTrigger() {
//clear all triggers
var tg = ScriptApp.getProjectTriggers();
if(tg.length>0){
for(i=0;i<tg.length;i++){
ScriptApp.deleteTrigger(tg[i]);
}
}
//build new trigger
ScriptApp.newTrigger("sendEmails")
.timeBased()
.onWeekDay(ScriptApp.WeekDay.THURSDAY)
.atHour(11)
.nearMinute(00)
.everyWeeks(8)
.create();
}
备注:
在项目的触发器中,它将显示为“
.everyWeeks(8)
.的代码中指定的那样,每8周运行一次。
参考文献:
https://stackoverflow.com/questions/56883978
复制相似问题