自动发送电子邮件Google App脚本:执行条件

时间:2012-07-10 13:34:48

标签: google-apps-script

我一直在处理这个脚本,它是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!');
}


所以我想在

之外添加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()')

1 个答案:

答案 0 :(得分:0)

我想我已经把它弄清楚了。我想分享我的解决方案,以便其他人可以使用它。

所以我添加了2 if else condtion 第一个将检查单元格值是否为< 201 如果小于201,则设置某个单元格示例F5 =未发送

另一个将检查的if else循环 如果F5的值!=已发送且单元格值== 201 而不是它将运行电子邮件代码 在运行该电子邮件代码后,它会将单元格F5设置为已发送

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

但这有一个小问题,它只适用于3行中的第1行,你可以通过添加更多条件来为所有3行设置它,我不需要它所以我并不担心它。 / p>

  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!');
}
    }