Цель: АВТОМАТИЧЕСКИ запустить сценарий для отправки электронного письма, когда дата == сегодня
Проблема: Скрипт работает при ручном запуске, но при использовании 'Триггеров текущего проекта' я получаю:
- НЕТ сообщения об ошибке
- НЕТ электронной почты
- Лист не заполнен с '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: Cannot найти функцию toLocaleDateString в объекте." при запуске с использованием 'Триггеров текущего проекта'. Он отлично работал при запуске вручную.
- Как вы отправляете дату напоминания на основе даты ячейки в Google Sheets?, что рекомендовало сломать
var reminderDate = row[2].toLocaleDateString();
, но результат такой же, как указано выше: ничего не происходит при запуске через триггер.
getSheetByName
. Запущенные скрипты могут по-прежнему генерировать сообщения об ошибках — рассмотрите возможность проверки журналов Stackdriver вашего проекта через Просмотр -> Журналы Stackdriver. Наконец,Date
сравнение на равенство требует численного принуждения: stackoverflow.com/questions/492994/ - person tehhowch   schedule 17.09.2018