Основываясь на пояснениях в вашем комментарии
Привет, зиганотчка, я просто хотел создать логику для уведомлений по электронной почте, сравнивая старое и новое значение. Я пытался создать функцию, если нет изменений в определенном диапазоне в течение 2 дней, а затем отправить уведомление по электронной почте. Можете ли вы помочь мне с логикой?
- Вы хотите отслеживать значение и отправить электронное письмо, если оно не изменилось в течение двух дней
- Для этого вам нужночтобы сохранить значение (и метку времени) после последнего изменения, для которого вы можете использовать Свойства скрипта
- Вам необходим триггер, который может быть onEdit или управляемым временем который будет регулярно проверять текущее значение, сравнивать его с сохраненным и оценивать, прошло ли 2 дня с момента последнего редактирования.
- Поскольку вы не хотите использовать триггер onEdit, найдите ниже объявление с вашимкод для использования с управляемым по времени триггером
- Вы можете привязать триггер к своей функции, перейдя в «Правка» -> «Триггеры текущего проекта» -> «Создать новый триггер»
- Установите
Select event source
в Time-driven
и type
и interval
в соответствии с вашими потребностями, например, Hour timer
, Every hour
Образец:
function checkUpdateStatus()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails");
//Selects a range of 13 rows and one column starting with the third row, second column - adapt to your needs if necessary
var range = sheet.getRange(3,2,13,1);
var values=range.getValues();
var now=new Date().getTime();
for(var i=0;i<values.length;i++){
for(var j=0;j<values[0].length;j++){
//the following lines will set-up script properties the first time you use them:
if(PropertiesService.getScriptProperties().getKeys().length==0){
PropertiesService.getScriptProperties().setProperty('values '+i+"-"+j,values[i][j]);
PropertiesService.getScriptProperties().setProperty('timestamp '+i+"-"+j,now);
//if script properties have been set-up already:
}else{
//use parseInt() if your values are integers, otherwise ommit it
var currentValue=parseInt(PropertiesService.getScriptProperties().getProperty('values '+i+"-"+j));
//if the value is still the same - check how long it has been the same
if(currentValue==values[i][j]){
var timeDifference=now-(PropertiesService.getScriptProperties().getProperty('timestamp '+i+"-"+j));
var days=timeDifference/1000/3600/24;
if(days>2){
//send email
}
//if the value has been changed, update the script properties with the new value and timestamp
}else{
PropertiesService.getScriptProperties().setProperty('values '+i+"-"+j,values[i][j]);
PropertiesService.getScriptProperties().setProperty('timestamp '+i+"-"+j,now);
}
}
}
}
}