Сценарий Google Sheet, не повторяющийся по электронной почте, предотвращает отправку дубликатов электронных писем после запуска сценария - PullRequest
0 голосов
/ 29 апреля 2020

Как мне избежать отправки дубликатов электронных писем после запуска скрипта. Сценарий, который я создал, упомянут ниже. Я просто хочу отправить атрибуты ОДНАЖДЫ на электронную почту в электронной таблице после запуска сценария.

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

1 Ответ

1 голос
/ 29 апреля 2020

Вам нужно добавить getValue () в строку, которая получает emailSent. Не обязательно, но одинарные кавычки также необходимо удалить из EMAIL_SENT, когда проверяется emailSent.

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);
      } 
    }    
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...