Как настроить автоматическое оповещение по электронной почте по дате - PullRequest
0 голосов
/ 11 ноября 2019

Я изо всех сил пытаюсь написать скрипт приложения, чтобы запускать автоматические электронные письма, основанные на дате. Я рассмотрел другие вопросы / ответы, но не могу понять это правильно. Мой Google-лист ниже:

Google-лист

Мои данные оповещения находятся на листе под названием H & S Reviews. Мое электронное сообщение находится в ячейке A1 листа оповещений по электронной почте.

Дата отправки сообщения - это столбец J листа отзывов H & S, и я подумал, что код может быть написан для этой ячейки, а ячейка J1 -сегодняшняя дата.

Column J = date email to be sent
Column I = first name of email recipient
Column H = email address
Column B = task per message
Column C = description per message

Мой код называется function sendEmails`. Вы увидите, что он нуждается в вашей экспертизе.

Кроме того, я надеюсь, что предупреждение может быть записано получателям электронной почты в Календарь Google, но не уверен, возможно ли это.

1 Ответ

1 голос
/ 11 ноября 2019

Вот код из вашего скрипта, модифицированный для отправки электронного письма, когда дата в столбце J совпадает с датой в J1. Я рекомендую вам изменить код для использования getValues ​​() [1] и зацикливать полученный массив вместо того, чтобы каждый раз использовать getValue (), он гораздо более оптимизирован и не позволит вам использовать квоты Google [2].

function sendEmails() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName("H&S Reviews").activate();
  var lastRow = sheet.getLastRow();
  var message = spreadsheet.getSheetByName("Email Alerts").getRange(1,1).getValue();

  for (var i = 3;i<=lastRow;i++){

    var emailAddress = sheet.getRange(i, 8).getValue();
    var firstName = sheet.getRange(i, 9).getValue();
    var todaysDate = sheet.getRange(1, 10).getValue();
    var date = sheet.getRange(i, 6).getValue();
    date = Utilities.formatDate(date,'GMT+0200','dd MMMM yyyy');
    var task = sheet.getRange(i, 2).getValue();
    var description = sheet.getRange(i, 3).getValue();
    var messageBody = message.replace("{name}",firstName).replace("{Task}",task).replace("{Description}",description).replace("{Date}",date);
    var subject = "Health & Safety Review Task"; 

    var sendDate = sheet.getRange(i, 10).getValue();
    var sheetDate = new Date(sendDate);
    Sdate=Utilities.formatDate(todaysDate,'GMT+0200','yyyy:MM:dd')
    SsheetDate=Utilities.formatDate(sheetDate,'GMT+0200', 'yyyy:MM:dd')
    Logger.log(Sdate+' =? '+SsheetDate)

    if (Sdate == SsheetDate){
      var subject = "Health & Safety Review Task";
      MailApp.sendEmail(emailAddress, subject, messageBody);
      Logger.log('SENT :'+emailAddress+'  '+subject+'  '+messageBody)
    }    
  }
}

[1] https://developers.google.com/apps-script/reference/spreadsheet/range#getValues()

[2] https://developers.google.com/apps-script/guides/services/quotas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...