У меня есть лист Google со списком имен, адресов электронной почты и дня рождения.Содержимое выглядит примерно так:
--------------------------------------------
| Name | email | Birthday |
--------------------------------------------
| John Doe | john@doe.com | 2018-05-13 |
| Jane Doe | jane@doe.com | 2018-05-12 |
Дата в столбце дня рождения проверяется на листе Google как дата, и я использовал указатель даты для ввода этих дат.
Что я хотел бы сделать дальше, это отправить электронное письмо на соответствующий день рождения человеку, но я столкнулся с несколькими проблемами.
Вот код, и я объясню проблемы после:
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000; // Number of rows to process
// Fetch the range of cells B2:B1000
var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
function sendBirthdayEmails() {
for (i in data) {
var row = data[i];
var startday = Utilities.formatDate(row[2], "UTC+2", "MM-dd"); //Store birthday without year
var today = Utilities.formatDate(new Date(), "UTC+2", "MM-dd"); //Store current date and remove year
if (today == startday) { //Evaluate if today is a birthday
var emailAddress = row[1]; // gather the email address
var message = "Woop woop, " + row[0] + "!<br>Today is your " + (Utilities.formatDate(new Date(), "UTC+1", "yyyy") - Utilities.formatDate(row[2], "UTC+1", "yyyy")) + " year(s) birthday!"; // Create the email message
var subject = "Your birthday!"; //Set email subject
//MailApp.sendEmail(emailAddress, subject, message, {htmlBody: message, replyTo: "birthday@example.com", name: "Birthday wishes", bcc: "myself@exmaple.com"}); //Invoke sending the email
}
}
}
Я уверен, что есть много более плавных способов справиться с этими вещами, и если есть, дайте мне знать.Однако я в основном сталкиваюсь с двумя проблемами:
1. По причинам, которые я не могу объяснить, дата из столбца дня рождения оценивается как предыдущий день в 22:00.Это звучит как проблема часового пояса, так как я в настоящее время нахожусь в UTC + 2 (CEST).Но как мне решить эту проблему?
2. В скрипте возникают проблемы с пустыми строками / ячейками, и при их обработке возникают ошибки, как правильно это исправить?Я предполагаю, что то, что я делаю выше, когда извлекаю строки со 2 по 1000, может быть сделано лучше?
Любая помощь очень ценится.