Как получить обновленное значение ячейки в листах Google - PullRequest
1 голос
/ 01 октября 2019

Я хочу отправить электронное письмо самому себе, если мой скрипт на python больше не запускается.

Я реализовал в python функцию uptime. Ячейка E5 обновляется с обновлением каждые 15 секунд. Если время работы не меняется, мой скрипт больше не запускается, и я хочу получать уведомления по электронной почте. По этой причине я сравниваю значение ячейки через 5 минут.

Но uptime_zahl и uptime_new_zahl всегда равны значению при запуске функции сценария моих приложений.

Как получить обновленное значение ячейки ??

function uptimeCheck() {
var ss = SpreadsheetApp.openById("XXX");
var sheet = ss.getSheetByName('Tabellenblatt1');
var uptime_string = sheet.getRange("E5").getValue().toString();
var uptime_zahl = Number(uptime_string.replace(',', "."));
Utilities.sleep(300000);//wait for 5 minutes

var uptime_new_string = sheet.getRange("E5").getValue().toString();
var uptime_new_zahl = Number(uptime_new_string.replace(',', "."));  
  if (uptime_zahl == uptime_new_zahl)
  {
    var emailAddress = 'XXX';
    var subject = 'The bot does not run';
    var message = 'old time: '+uptime_zahl+'new time: '+uptime_new_zahl;
    MailApp.sendEmail(emailAddress, subject,message);
  }  
}

1 Ответ

1 голос
/ 01 октября 2019

Вы можете сохранить uptime_zahl в Свойства скрипта и автоматически запускать скрипт на управляемом по времени триггере (например, каждые 5 минут).

Следующееsample

  • устанавливает во время первого запуска свойства сценария 'uptime_zahl' фактическое значение в "E5", а состояние sent в 0
  • сравнивает текущее значение в«E5» против того, который был сохранен во время последнего запуска скрипта
  • отправляет электронное письмо, если значение остается прежним, и электронное письмо еще не было отправлено
  • устанавливает свойство скрипта в текущее значениеи sent до 1, если электронное письмо с текущим значением уже отправлено
function uptimeCheck() {

var ss = SpreadsheetApp.openById('XXX');
var sheet = ss.getSheetByName('Tabellenblatt1');
var uptime_string = sheet.getRange("E5").getValue().toString();
var uptime_new_zahl = Number(uptime_string.replace(',', "."));

if(PropertiesService.getScriptProperties().getKeys().length==0){ // first time you run the script
  PropertiesService.getScriptProperties().setProperty('uptime_zahl',uptime_new_zahl);
  PropertiesService.getScriptProperties().setProperty('sent',0);
}
var sent=parseInt(PropertiesService.getScriptProperties().getProperty('sent'));  
var uptime_zahl = PropertiesService.getScriptProperties().getProperty('uptime_zahl');
if (uptime_zahl == uptime_new_zahl&&sent==0)
  {
    Logger.log('still the same, email sent: '+uptime_zahl);
    var emailAddress = 'XXX';
    var subject = 'The bot does not run';
    var message = 'old time: '+uptime_zahl+'new time: '+uptime_new_zahl;
    MailApp.sendEmail(emailAddress, subject,message);
    sent=1;
  }else if(uptime_zahl != uptime_new_zahl){
    sent=0;
    Logger.log('value changed');
  }else{
    Logger.log('value did not change, but email has been sent already');
  }               
PropertiesService.getScriptProperties().setProperty('uptime_zahl',uptime_new_zahl);  
PropertiesService.getScriptProperties().setProperty('sent',sent);  
}

Чтобы настроить управляемый по времени триггер:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...