【发布时间】:2019-07-09 05:37:35
【问题描述】:
我有将列中的日期与今天的日期进行比较并发送电子邮件的脚本。问题是它会为每个比较的单元格发送大量电子邮件。
这是我的代码
function sendEmailAlert3() {
var ss = SpreadsheetApp.openById("ID");
var sheet = ss.getSheetByName("Sheet1");
var sheetname = ss.getSheetByName("Sheet1").getName();
var fValues = sheet.getRange('F2:F20').getValues();
var day = 24*3600*1000
var today = parseInt((new Date().setHours(0,0,0,0))/day);
var user = Session.getActiveUser().getEmail();
var Toemail = 'mail@gmail.com';
var subject = 'Theme - ' + ss.getName();
var body = 'Edited - ' + sheetname + '\nBy - ' + user +
'\nCheck - ' + ss.getUrl();
var NoEditSubject = 'No ' + ss.getName() + '!';
var NoEditBody = 'No - ' + sheetname + ss.getUrl();
for (var i = 0; i < fValues.length; i++) {
var dataday = parseInt(fValues[i][0].getTime()/day)
Logger.log(dataday+' = '+today)
if (dataday <= today-5) {MailApp.sendEmail(Toemail,subject, body);}
else {MailApp.sendEmail(Toemail,NoEditSubject, NoEditBody);}
}
}
我需要再添加一个条件,比如next cell == false。
If (dataday <= today-5 || next cell == false) - 对于此条件的第一次匹配需要发送一次电子邮件并停止循环
Else if (dataday <= today-5 || next cell == true) - 对于此条件的第一次匹配需要发送一次电子邮件并停止循环
else - 什么都不做
编辑毕竟回答我的代码看起来像那样(底部):
var dataRange = sheet.getRange(2,7,2,1);
var data = dataRange.getValues();
for (i = 0; i < fValues.length; i++) {
var dataday = parseInt(fValues[i][0].getTime()/day)
for (k = 0; k < data.length; k++) {
Logger.log(dataday)
if (dataday <= today+5 && data[k][0] == "false")
{MailApp.sendEmail(Toemail,subject, body);
}
}
}
条件是 (dataday
【问题讨论】:
-
下一个单元格是什么?
-
我的意思是我的范围是 F2:F20,“下一个单元格”它是下一列 G 上的单元格。
标签: google-apps-script google-sheets google-sheets-api