我有一个脚本,用于比较列中的日期与今天的日期并发送电子邮件。问题是它为每个比较的单元格发送大量电子邮件。
这是我的代码
Huawei CAG-L22
我需要再添加一个条件条件,例如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
条件为(数据日<=今日+5 && data [k] [0] ==“ false”)。在这种情况下,脚本只能发送一封电子邮件。因为这两个条件仅适用于第一行。但是它发送两个电子邮件。我不知道怎么了。
答案 0 :(得分:0)
您需要做的就是在if语句中实现return语句-这将使循环在发送第一封电子邮件后停止。像这样:
if (dataday <= today-5) {
MailApp.sendEmail(Toemail,subject, body);
return;
}
else {MailApp.sendEmail(Toemail,NoEditSubject, NoEditBody);}
对于问题的第二部分:如果您命名嵌套循环,则可以退出嵌套循环,然后使用“ break”退出,指定要退出的循环,如here所述:
var i, j;
loop1:
for (i = 0; i < 3; i++) { //The first for statement is labeled "loop1"
loop2:
for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2"
if (i === 1 && j === 1) {
break loop1;
}
}
}