Скрипт не отправляет электронное письмо при запуске кода

#google-apps-script #google-sheets

Вопрос:

Я использую этот скрипт для автоматической отправки электронной почты, когда дата = текущая дата затем запускается, но он не отправляет электронное письмо, я не знаю, почему.

Ваша помощь будет очень признательна.

https://docs.google.com/spreadsheets/d/1wxDa9D9a1wddqu9Fh4r3uZAX0m1NKNj2H7g_uS141-0/edit#gid=0

 function sendEmail() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Mysheet");
  var startRow = 2;  // First row of data to process
  var numRows = sheet.getLastRow()-1;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  Logger.log(data)

  for (i in data) {
    var row = data[i];
    var date = new Date();
    var sheetDate = new Date(row[1]);
    Sdate=Utilities.formatDate(date,'GMT 0200','yyyy:MM:dd')
    SsheetDate=Utilities.formatDate(sheetDate,'GMT 0200', 'yyyy:MM:dd')
    Logger.log(Sdate ' =? ' SsheetDate)
    if (Sdate == SsheetDate){
      var emailAddress = row[0];  // First column
      var message = row[2];       // Second column
      var subject = "Sending emails from a Spreadsheet";
//      MailApp.sendEmail(emailAddress, subject, message);
     Logger.log('SENT :' emailAddress '  ' subject '  ' message)
    }    
  }
}
 

Комментарии:

1. При запуске кода условие строки 2 передается, поэтому оно должно отправлять почту. Что вы видите в журналах за эти 2 даты ?

2. Но это не отправка электронных писем. вот окна журнала выполнения imgur.com/NnylGS3 это показывает, что электронное письмо было отправлено. затем я использовал разные электронные письма, проблема была такой же.

Ответ №1:

 function sendEmail() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Mysheet");
  const startRow = 2;   
  const subject = "Sending emails from a Spreadsheet";
  const vs = sh.getRange(startRow, 1, sh.getLastRow() - startRow   1, sh.getLastColumn()).getValues();
  vs.forEach(row =>  {
    let dt = new Date();
    let dtv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
    let sdt = new Date(row[1]);
    let sdtv = new Date(sdt.getFullYear(),sdt.getMonth(),sdt.getDate()).valueOf();
    if (sdtv == dtv){
      MailApp.sendEmail(row[0], subject, row[2]);
    }    
  });
}
 

Комментарии:

1. Спасибо @Cooper, теперь все работает идеально.