编辑

时间:2016-11-21 20:53:12

标签: google-apps-script

我希望在编辑发生后获得触发器以运行指定的时间

我想我可以将某个编辑触发器和基于时间的触发器组合在一起来实现此功能,但不清楚如何。

提供一些额外的细节。

我有一张Google表格,用于跟踪我的胰岛素用量。我应该在服用胰岛素后2小时检查血糖。

当我管理胰岛素时,我进入Google表格,时间/金额/等...当我输入此条目时,我想创建一个触发器,该触发器将在2小时内运行,向我发送电子邮件通知提醒我再次检查我的血糖并重新开始。

3 个答案:

答案 0 :(得分:5)

这就是我在Google App Script中使用时间触发器的方法。

创建时间触发器的功能。

function createTriggger(name,action,time){
//  Time is in minutes
  var trigger = ScriptApp.newTrigger(action)
  .timeBased()
  .after(time*60*1000)
  .create();
  var triggerID = trigger.getUniqueId();

//  Store trigger id to delete the trigger once it has executed
  PropertiesService.getScriptProperties().setProperty(name, triggerID);
};

name是存储触发器ID的属性的名称,因此您可以在执行后删除触发器。 action是您希望触发器执行的函数的名称,time是几分钟。

在函数的最后一行,您希望触发器执行,使用此行来获取触发器ID并将其从触发器列表中删除。将触发器ID属性的名称放在name

var triggerID = PropertiesService.getScriptProperties().getProperty(name)
deleteThisOne(triggerID)

这是删除功能:

function deleteThisOne(id){
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0;i<triggers.length;i++){
    if(triggers[i].getUniqueId() == id){
      ScriptApp.deleteTrigger(triggers[i]);
      break;
    };
  };
};

查看Limitations

的google脚本Installable Triggers

答案 1 :(得分:0)

当您的编辑触发器触发时,您可以使用ClockTrigger - 请参阅ClockTriggerBuilder文档和示例,该示例允许您设置相对于当前执行时间的时间,或者在绝对时间

答案 2 :(得分:0)

您可以使用这样的解决方法:

在电子表格中的某个角落单元格中设置“0”值,您不会修改它。隐藏该列。

在电子表格上设置onEdit触发器并写入其函数,该函数将值设置为“0”。

设置另一个触发器,每10分钟触发一次,每次将该单元格值增加10。同时将其添加到该函数:

if(cellValue%120 == 0)
{
    setReminder(); //function to send you reminder
    cellValue = 0;
}