Google Apps脚本,按顺序运行时间驱动的触发器

时间:2016-03-08 09:22:07

标签: time google-apps-script triggers

我需要在一夜之间运行3个功能(当没有人使用我的电子表格时)。我的约束是

  • function1必须在function2启动之前完成,function2必须在function3启动之前完成
  • 每个过程,在更糟糕的情况下可能需要90到120秒才能完成

我知道每个脚本在服务器终止线程之前的最长执行时间为6分钟。根据我的经验,我发现这种情况通常发生在5分钟左右。

我不打算将所有3个函数放入单个函数中,因为最糟糕的情况(3x 120秒)可能会让服务器终止该线程。

我打算做的是在一夜之间一个接一个地安排这些功能 enter image description here

我的问题是:这些间隔是61分钟还是60分钟? EG Function2 AND Function3是否可以在01:00开始执行?

我想我可以安排他们在23:00-00:00,01:00-02:00和03:00-04:00开火。我希望找到一个没有解决方案的解决方案。完成5小时(最坏情况)。

由于

2 个答案:

答案 0 :(得分:1)

您可以根据需要创建触发器。您无需依赖基于菜单的触发器。

例如,对于您的情况,您可以执行以下操作:

function createTimeDrivenTriggers() {


  // Trigger Function 1 everyday at 23:00.

  ScriptApp.newTrigger('Function 1')
      .timeBased()
      .everyDays(1)
      .atHour(23)
      .create();

 // Trigger Function 2 everyday at 1:00.
  ScriptApp.newTrigger('Function 2')
      .timeBased()
      .everyDays(1)
      .atHour(1)
      .create();

// Trigger Function 3 everyday at 2:00.
  ScriptApp.newTrigger('Function 3')
      .timeBased()
      .everyDays(1)
      .atHour(2)
      .create();
}

请访问:ClockTriggerBuilder以获得更大的灵活性。

答案 1 :(得分:0)

您可以通过编程方式创建一个触发器,该触发器将在[1]

中的确切给定时间运行
ScriptApp.newTrigger('myFunction').timeBased().everyDays(1).atHour(11).create();

运行此代码一次,将设置触发器

[1] https://developers.google.com/apps-script/guides/triggers/installable#managing_triggers_programmatically