У меня странная проблема с форматированием дат в Google Таблицах и Google Script.
Я разрабатываю сценарий, который считывает список дат в таблице Google, а затем автоматически c отправляет электронные письма на список получателей. У меня есть ячейка в электронной таблице с датой в формате «дд / мм / гггг», а затем я использую следующие формулы (ячейка + 7, ячейка + 14, ячейка + 21, ячейка + 28, et c ... ), чтобы сгенерировать все остальные даты в электронной таблице.
Я использую следующий код для чтения дат в электронной таблице:
var sheet = SpreadsheetApp.getActiveSheet();
var drng = sheet.getDataRange();
var rng = sheet.getRange(4, 2, drng.getLastRow()-3, drng.getLastColumn());
var rngData = rng.getValues();
var todayDate = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy");
// CYCLE THROUGH DATA
for (var i = 0; i < rngData.length; i++) { // cycle through the rows in the spreadsheet
var ptLastName = rngData[i][0]; // fixed patient data used to email customization
var ptFirstName = rngData[i][1];
var ptDoB = Utilities.formatDate(rngData[i][2], "GMT+1", "dd/MM/yyyy");
var ptSex = rngData[i][3];
var ptEmail = rngData[i][4];
var ptDoS = Utilities.formatDate(rngData[i][5], "GMT+1", "dd/MM/yyyy");
var ptDoD = Utilities.formatDate(rngData[i][6], "GMT+1", "dd/MM/yyyy");
for (var j = 7; j <= 14; j++) { // cycle through follow-up data for the current patient
var currentDate = Utilities.formatDate(rngData[i][j], "GMT+1", "dd/MM/yyyy");
if (currentDate == todayDate) { // send email with the questionnaire
writeEmail(ptFirstName, ptLastName, ptSex, ptDoD, ptEmail);
rng.getCell(i+1, j+1).setBackground("yellow");
}
}
}
Проблема в том, что когда я пытаюсь прочитать и отформатировать некоторые даты не соответствуют датам, указанным в таблице. Я заметил, что неправильные даты в коде систематически на 1 день раньше, чем даты, указанные в таблице. При более внимательном рассмотрении я заметил, что некоторые даты считываются из электронной таблицы в GMT + 2, в то время как другие - в GMT + 1.
Это странно, потому что я также проверил свои системные настройки (это GMT + 1). как настройки электронной таблицы (GMT + 1). Поэтому я не понимаю, почему некоторые даты автоматически конвертируются в GMT + 2.