У меня есть скрипт, который сравнивает даты в столбце с сегодняшней датой и отправкой электронной почты.Проблема в том, что он посылает много писем для каждой сравниваемой ячейки.
Вот мой код
function sendEmailAlert3() {
var ss = SpreadsheetApp.openById("ID");
var sheet = ss.getSheetByName("Sheet1");
var sheetname = ss.getSheetByName("Sheet1").getName();
var fValues = sheet.getRange('F2:F20').getValues();
var day = 24*3600*1000
var today = parseInt((new Date().setHours(0,0,0,0))/day);
var user = Session.getActiveUser().getEmail();
var Toemail = 'mail@gmail.com';
var subject = 'Theme - ' + ss.getName();
var body = 'Edited - ' + sheetname + '\nBy - ' + user +
'\nCheck - ' + ss.getUrl();
var NoEditSubject = 'No ' + ss.getName() + '!';
var NoEditBody = 'No - ' + sheetname + ss.getUrl();
for (var i = 0; i < fValues.length; i++) {
var dataday = parseInt(fValues[i][0].getTime()/day)
Logger.log(dataday+' = '+today)
if (dataday <= today-5) {MailApp.sendEmail(Toemail,subject, body);}
else {MailApp.sendEmail(Toemail,NoEditSubject, NoEditBody);}
}
}
Мне нужно добавить еще одно условие, например next cell == false
.
If (dataday <= today-5 || next cell == false)
- для первого совпадения этого условия необходимо один раз отправить электронное письмо и остановить цикл
Else if (dataday <= today-5 || next cell == true)
- для первого совпадения с этим условием необходимо один раз отправить электронное письмо и остановить цикл
else
- сделатьничего
РЕДАКТИРОВАТЬ после всех ответов мой код выглядит так (нижняя часть):
var dataRange = sheet.getRange(2,7,2,1);
var data = dataRange.getValues();
for (i = 0; i < fValues.length; i++) {
var dataday = parseInt(fValues[i][0].getTime()/day)
for (k = 0; k < data.length; k++) {
Logger.log(dataday)
if (dataday <= today+5 && data[k][0] == "false")
{MailApp.sendEmail(Toemail,subject, body);
}
}
}
Но он все еще не работает.Я постараюсь уточнить, в чем проблема.
Условие (дата <<сегодня + 5 && data [k] [0] == "false").В этом случае скрипт должен отправить только одно письмо.Потому что оба условия верны только для первого ряда.Но он отправил два электронных письма.Я не знаю, в чем проблема. </p>