【问题标题】:Non-Duplicate Email Google Sheet Script - Prevent Sending Duplicate Emails Once I Run the Script非重复电子邮件 Google 表格脚本 - 运行脚本后防止发送重复电子邮件
【发布时间】:2020-04-28 23:34:22
【问题描述】:

如何避免在运行脚本后发送重复的电子邮件。我创建的脚本如下所述。运行脚本后,我只想将属性一次发送到电子表格上的电子邮件。

var EMAIL_SENT = 'EMAIL_SENT';

function sendEmails() {

  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").activate();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var lr = ss.getLastRow()

  var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subject Template").getRange(1, 1).getValue();

  var quotaLeft = MailApp.getRemainingDailyQuota();

  if ((lr-1) > quotaLeft) {

    Browser.msgBox("You have " + quotaLeft + " left and you're trying to send " + (lr-1) + " emails. Emails were not sent.")

  } else {

    for (var i = 2;i<=lr;i++) {

      var currentEmail = ss.getRange(i, 6).getValue();
      var currentSubject = ss.getRange(i, 5).getValue()
      var currentUser = ss.getRange(i, 2).getValue();
      var currentDivision = ss.getRange(i, 3).getValue();
      var currentIssue = ss.getRange(i, 5).getValue();
      var currentSeveritylevel = ss.getRange(i, 4).getValue();
      var emailSent = ss.getRange(i, 9);

      var messageBody = templateText.replace("{User}",currentUser).replace("{division}",currentDivision).replace("{Issue}",currentIssue).replace("{Severity level}", currentSeveritylevel);
      var subjectLine = "Tech Support Issue: " + currentIssue + " for " + currentUser;

      if (emailSent !== EMAIL_SENT) {
        MailApp.sendEmail(currentEmail, subjectLine, messageBody);
        ss.getRange(i, 9).setValue('EMAIL_SENT');
      } 
    }
  }
}

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    您需要在获取 emailSent 的行中添加一个 getValue()。不是必需的,但在检查 emailSent 时,单引号也需要从 EMAIL_SENT 中删除。

    var EMAIL_SENT = 'EMAIL_SENT';
    
    function sendEmails() {
    
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").activate();
    
      var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
      var lr = ss.getLastRow()
    
      var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Subject Template").getRange(1, 1).getValue();
    
      var quotaLeft = MailApp.getRemainingDailyQuota();
    
      if ((lr-1) > quotaLeft) {
    
        Browser.msgBox("You have " + quotaLeft + " left and you're trying to send " + (lr-1) + " emails. Emails were not sent.")
    
      } else {
    
        for (var i = 2; I <=lr; i++) {
    
          var currentEmail = ss.getRange(i, 6).getValue();
          var currentSubject = ss.getRange(i, 5).getValue()
          var currentUser = ss.getRange(i, 2).getValue();
          var currentDivision = ss.getRange(i, 3).getValue();
          var currentIssue = ss.getRange(i, 5).getValue();
          var currentSeveritylevel = ss.getRange(i, 4).getValue();
          var emailSent = ss.getRange(i, 9).getValue();
    
          var messageBody = templateText.replace("{User}",currentUser).replace("{division}",currentDivision).replace("{Issue}",currentIssue).replace("{Severity level}", currentSeveritylevel);
    
          var subjectLine = "Tech Support Issue: " + currentIssue + " for " + currentUser;
    
          if (emailSent !== EMAIL_SENT) {
            MailApp.sendEmail(currentEmail, subjectLine, messageBody);
            ss.getRange(i, 9).setValue(EMAIL_SENT);
          } 
        }    
      }
    

    【讨论】:

    • 太好了。乐意效劳。因为这是答案,请点击评分旁边的“答案勾号”。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2011-09-16
    相关资源
    最近更新 更多