Цель: АВТОМАТИЧЕСКИЙ запуск сценария для отправки электронного письма, когда дата == сегодня
Проблема: скрипт работает при запуске вручную, но при использовании 'Триггеры текущего проекта' я получаю:
- НЕТ сообщения об ошибке
- НЕТ электронной почты
- Лист не заполнен с 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();
}
}
}
Я ссылался на следующие существующие вопросы и ответы:
- Отправлять электронные письма с напоминанием на основе даты , но при этом возвращается ошибка «TypeError: Невозможно найти функцию toLocaleDateString в объекте.» При запуске с использованием «Триггеры текущего проекта» . Он работал отлично, когда запускался вручную.
- Как вы отправляете дату напоминания на основе даты ячейки в Google Sheets? , в которой рекомендуется разбить
var reminderDate = row[2].toLocaleDateString();
, но результат такой же, как и выше: ничего не происходит при запуске через триггер.