0

我在这个脚本上工作了很长时间,它是 Google App 脚本,它会自动向提供的电子邮件发送电子邮件警报,并且我在每 1 分钟运行一次时触发脚本。

因此,如果单元格总数大于 201,它将向用户发送电子邮件。但问题是它每分钟运行一次脚本就发送电子邮件。

我需要编码方面的帮助,如果电子邮件已经发送过一次,它将不会再次发送,除非单元格值再次小于 201 并返回大于 201,我正在考虑制作一个包含文本“已发送”或“未发送”

如果它说“未发送”让电子邮件代码运行如果总数大于 201 如果它说“已发送”并且总数大于 201 不要让电子邮件代码运行..

我知道我不是很清楚,但在这方面很难获得帮助。这是代码。

如果这可行,我相信很多人都可以使用这个脚本。

 function sendEmail(email_address, email_subject, email_message) {
  MailApp.sendEmail(email_address, email_subject, email_message);
}

function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.setActiveCell('A2');
  var criterion_cutoff = 201;
  var i = 0;
  var addr;
  var subj;
  var msg;


  do {
    addr = cell.offset(i,0).getValue();
    subj = cell.offset(i,1).getValue();
    msg = cell.offset(i,2).getValue();
    criterion = cell.offset(i,3).getValue();

    if(criterion == criterion_cutoff) {
      sendEmail(addr,subj,msg);
     // Browser.msgBox('Sending email to: ' + addr);
    }
    i++;
      } while( cell.offset(i, 0).getValue().length > 0 )


  Browser.msgBox('Done!');
}


所以我想在 do while 之外添加 if else 条件

 if(SpreadsheetApp.getActiveSheet().getRange(21,6).getValue() != 'Not Sent') {
    do {
        //same stuff as above
     } while(condition)

    }

   else 
       //don't know wht else to do in else condtion so just using googleclock
         SpreadsheetApp.getActiveSheet().getRange(2,7).setValue('=GoogleClock()')
4

1 回答 1

0

我想我已经自己想通了。我想分享我的解决方案,以便其他人可以使用它。

所以我添加了 2 if else condtion first one will check if cell value is < 201 if it is less than 201 than set somecell example F5 = Not Sent

另一个 if else 循环将检查 F5 的值 != Sent 和单元格值 == 201 是否会运行电子邮件代码,并在运行该电子邮件代码后立即将单元格 F5 设置为 Sent

所以下次循环再次运行它不会再次发送电子邮件,除非单元格的值为

但这有一个小问题,它只适用于 3 行中的第 1 行,您可以通过添加更多 if 条件来实现所有 3 行,我不需要它,所以我不担心。

  function sendEmail(email_address, email_subject, email_message) {
  MailApp.sendEmail(email_address, email_subject, email_message);
}

function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.setActiveCell('A2');
  var criterion_cutoff = 201;
  var i = 0;
  var addr;
  var subj;
  var msg;

  if((SpreadsheetApp.getActiveSheet().getRange(2,4).getValue() < '201'))  {
    SpreadsheetApp.getActiveSheet().getRange(2,6).setValue('Not Sent');
  }
  else  
    if((SpreadsheetApp.getActiveSheet().getRange(2,6).getValue() != 'Sent') && (SpreadsheetApp.getActiveSheet().getRange(2,4).getValue() == '201')) {
  do {
    addr = cell.offset(i,0).getValue();
    subj = cell.offset(i,1).getValue();
    msg = cell.offset(i,2).getValue();
    criterion = cell.offset(i,3).getValue();

    if(criterion == criterion_cutoff) {
      sendEmail(addr,subj,msg);
     // Browser.msgBox('Sending email to: ' + addr);
      SpreadsheetApp.getActiveSheet().getRange(2,6).setValue('Sent');
    }
    i++;
      } while( cell.offset(i, 0).getValue().length > 0 )

  Browser.msgBox('Done!');
}
    }
于 2012-07-11T13:00:53.393 回答