2016-11-21 93 views
0

我想要触发器运行指定的时间量发生编辑后。在编辑后运行触发器X的时间量

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

提供一些额外的细节。

我有一个Google表格,可以跟踪我的胰岛素使用情况。我应该在给予胰岛素2小时后检查血糖。

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

回答

4

这是我如何在Google App脚本中使用时间触发器。

创建时间触发器的函数。

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

0

当您的编辑触发器触发时,您可以使用ClockTrigger - 请参阅ClockTriggerBuilder文档和示例,它允许您设置相对于当前执行时间的时间或绝对时间。在电子表格中的某个角落细胞,你永远不会修改

设置“0”值:

0

您可以使用周围的工作是这样的。隐藏该列。

在电子表格上设置onEdit触发器,并写入其设置值'0'的函数。

设置另一个触发器,每10分钟触发一次,每增加10个单元格值。此外,添加到该功能:

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