谷歌工作表发送电子邮件脚本多次向同一电子邮件地址发送消息/直到今天才发生。有什么办法可以解决吗?



堆叠花朵!

我的Sendemail脚本有问题,它向每个邮件地址发送8次相同的消息(真的很烦人,不是吗?(直到今天它一直工作正常,我每天向五个人发送剩余部分;我的谷歌表格有两列,一列是电子邮件地址,另一列是消息(

我的代码如下所示:

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet(); 
var startRow = 2; // First row of data to process
var numRows = 5; // Number of rows to process
// Fetch the range of cells A2:B6
var dataRange = sheet.getRange(startRow, 1, numRows, 5);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i in data) {
var row = data[I];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var subject = 'ATTENTION!!!!!!';
MailApp.sendEmail(emailAddress, subject, message);
}
}

我该如何解决这个烦人的问题?(我不是开发人员;我只是一个可以很好地使用互联网资源的学习者;所以,我不太了解脚本,仍然可以对其进行一些编辑或更改。

目前存在时间驱动触发器的错误

因此,触发器可能会触发多次 - 比您指定的频率更高。

您可以在Google的问题跟踪器上为该问题"加注星标",以表明您也担心。

同时,作为解决方法:

  • 使用脚本属性保存上次执行时间
  • 在代码开头实现一个if语句,该语句仅在上次执行时间(从脚本属性检索(不小于指定间隔时执行代码的其余
  • 部分

样本:

function sendEmails() {
if(!PropertiesService.getScriptProperties().getProperty("lastExecution")){
PropertiesService.getScriptProperties().setProperty("lastExecution", new Date().getTime());
}
var lastExecution = PropertiesService.getScriptProperties().getProperty("lastExecution");
var now = new Date().getTime();
var oneDay = 1000*3600*24;
if(now-lastExecution >= oneDay){
//here the rest of you code
var sheet = SpreadsheetApp.getActiveSheet(); 
var startRow = 2; // First row of data to process
var numRows = 5; // Number of rows to process
// Fetch the range of cells A2:B6
var dataRange = sheet.getRange(startRow, 1, numRows, 5);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i in data) {
var row = data[I];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var subject = 'ATTENTION!!!!!!';
MailApp.sendEmail(emailAddress, subject, message);
PropertiesService.getScriptProperties().setProperty("lastExecution", now);
}
}
}

相关内容

最新更新