Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 编辑后运行触发器X时间量_Google Apps Script - Fatal编程技术网

Google apps script 编辑后运行触发器X时间量

Google apps script 编辑后运行触发器X时间量,google-apps-script,Google Apps Script,我想获得一个触发器,在编辑发生后运行指定的时间 我在想,我可以有人结合编辑触发器和基于时间的触发器来实现这个功能,但不清楚如何实现 提供一些额外的细节 我有一个谷歌表格,可以跟踪我的胰岛素使用情况。我应该在注射胰岛素2小时后检查血糖 当我注射胰岛素时,我会在谷歌表格中输入时间/数量等信息。。。当我输入此条目时,我想创建一个触发器,该触发器将在2小时内运行,向我发送电子邮件通知,提醒我再次检查血糖并输入新条目。当编辑触发器触发时,您可以使用时钟触发器-请参阅文档和示例,它允许您设置相对于当前执行时

我想获得一个触发器,在编辑发生后运行指定的时间

我在想,我可以有人结合编辑触发器和基于时间的触发器来实现这个功能,但不清楚如何实现

提供一些额外的细节

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


当我注射胰岛素时,我会在谷歌表格中输入时间/数量等信息。。。当我输入此条目时,我想创建一个触发器,该触发器将在2小时内运行,向我发送电子邮件通知,提醒我再次检查血糖并输入新条目。

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

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

您可以使用如下方法:

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

在电子表格上设置OneEdit触发器并编写其函数,该函数设置值“0”

设置另一个每10分钟触发一次的触发器,使该单元格值每次增加10。还要将此添加到该函数中:

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

您可以使用这样的工作环境:

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

在电子表格上设置OneEdit触发器并编写其函数,该函数设置值“0”

设置另一个每10分钟触发一次的触发器,使该单元格值每次增加10。还要将此添加到该函数中:

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

这就是我在谷歌应用程序脚本中使用时间触发器的方式

函数创建时间触发器

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;
    };
  };
};
函数deleteThisOne(id){
var triggers=ScriptApp.getProjectTriggers();

对于(var i=0;i这是我在Google应用程序脚本中使用时间触发器的方式

函数创建时间触发器

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);
};
名称
是存储触发器id的属性的名称,因此您可以在触发器执行后删除它。
操作
是您希望触发器执行的函数的名称,
时间
以分钟为单位

在要执行触发器的函数的最后一行,使用此行获取触发器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;
    };
  };
};
函数deleteThisOne(id){
var triggers=ScriptApp.getProjectTriggers();
对于(var i=0;i