第一次比赛后Google脚本停止循环

时间:2019-07-09 05:37:35

标签: google-apps-script google-sheets google-sheets-api

我有一个脚本,用于比较列中的日期与今天的日期并发送电子邮件。问题是它为每个比较的单元格发送大量电子邮件。

这是我的代码

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

但是它仍然无法正常工作。 我将尝试指出问题所在。 enter image description here

条件为(数据日<=今日+5 && data [k] [0] ==“ false”)。在这种情况下,脚本只能发送一封电子邮件。因为这两个条件仅适用于第一行。但是它发送两个电子邮件。我不知道怎么了。

1 个答案:

答案 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;
      }
   }
}