如果我的python脚本不再运行,我想给自己发一封电子邮件。
我在python中实现了一个uptime函数。Cell 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);
}
}发布于 2019-10-01 17:23:17
您可以将uptime_zahl存储在Script properties中,并在time-driven trigger上运行自动脚本(例如,每5分钟运行一次)。
以下示例
sent状态设置为将"E5”中的当前值与上次脚本运行期间存储的值进行对比。如果该值仍然相同并且尚未发送电子邮件,则sent设置为1。<代码>H215<代码>F216function 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);
}设置时间驱动触发器的
:

https://stackoverflow.com/questions/58180904
复制相似问题