首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在google sheets中获取更新的单元格值

如何在google sheets中获取更新的单元格值
EN

Stack Overflow用户
提问于 2019-10-01 16:32:02
回答 1查看 56关注 0票数 0

如果我的python脚本不再运行,我想给自己发一封电子邮件。

我在python中实现了一个uptime函数。Cell E5每15秒更新一次新的正常运行时间。如果正常运行时间没有改变,我的脚本将不再运行,我希望通过电子邮件获得通知。由于这个原因,我在5分钟后比较了单元格值。

但是当我启动应用程序脚本函数时,uptime_zahl和uptime_new_zahl的值总是相等的。

如何获取更新后的单元格值??

代码语言:javascript
复制
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);
  }  
}
EN

回答 1

Stack Overflow用户

发布于 2019-10-01 17:23:17

您可以将uptime_zahl存储在Script properties中,并在time-driven trigger上运行自动脚本(例如,每5分钟运行一次)。

以下示例

  • 在第一次运行期间将脚本属性'uptime_zahl‘设置为"E5“中的实际值,并将sent状态设置为将"E5”中的当前值与上次脚本运行期间存储的值进行对比。如果该值仍然相同并且尚未发送电子邮件,则
  • 发送电子邮件。如果已经发送了当前值的电子邮件,则
  • 将脚本属性设置为当前值,将sent设置为1。<代码>H215<代码>F216

代码语言:javascript
复制
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);  
}

设置时间驱动触发器的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58180904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档