堆叠花朵!
我的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);
}
}
}