Отправка электронных писем с функцией запуска через временные триггеры - PullRequest
0 голосов
/ 17 сентября 2018

Цель: АВТОМАТИЧЕСКИЙ запуск сценария для отправки электронного письма, когда дата == сегодня

Проблема: скрипт работает при запуске вручную, но при использовании 'Триггеры текущего проекта' я получаю:

  • НЕТ сообщения об ошибке
  • НЕТ электронной почты
  • Лист не заполнен с EMAIL_SENT

Сценарий:

// Send email reminder to the team
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails3() {
  var today = new Date().toLocaleDateString();  // Today's date, without time

  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = sheet.getLastRow()-1 // Get last row, -1 because your startrow is 2;   // Number of rows to process
  // Fetch the range of cells A2:B999
  var dataRange = sheet.getRange(startRow, 1, numRows, 999)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[8];  // First column
    var subject = row[9];     // Second column
    var message = row[10];    // Third column
    var emailSent = row[11];
    //var reminderDate = row[6].toLocaleDateString();  // date specified in cell G
    var cellValue, reminderDate; //Define variables at top of function

    cellValue = row[6]; // date specified in cell C
    if (!cellValue) {continue;} //If there is no cell value continue looping

    if (typeof cellValue === 'object') {
      reminderDate = cellValue.toLocaleDateString();
    } else {
      cellValue = new Date(cellValue);//Convert date as string to object
      reminderDate = cellValue.toLocaleDateString();
    }

    if (reminderDate != today)      // Skip this reminder if not for today
      continue; 

    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      MailApp.sendEmail(emailAddress,subject,message);
      sheet.getRange(startRow + i, 12).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();     
    }
  }
}

Я ссылался на следующие существующие вопросы и ответы:

  1. Отправлять электронные письма с напоминанием на основе даты , но при этом возвращается ошибка «TypeError: Невозможно найти функцию toLocaleDateString в объекте.» При запуске с использованием «Триггеры текущего проекта» . Он работал отлично, когда запускался вручную.
  2. Как вы отправляете дату напоминания на основе даты ячейки в Google Sheets? , в которой рекомендуется разбить var reminderDate = row[2].toLocaleDateString();, но результат такой же, как и выше: ничего не происходит при запуске через триггер.
...