如何创建从上午 11 点运行到下午 2 点的时间驱动触发器?

How to create a time-driven trigger that runs from 11 am to 2 pm?

我正在尝试构建一个脚本,该脚本应该 运行 每个星期二、星期三和星期四上午 11 点到下午 2 点之间以及每 10 分钟之后。

例如如果今天是星期二.. 那么脚本将从上午 11 点开始执行,每 10 分钟执行一次,然后应该在当天下午 2 点停止执行。

现在我正在尝试以编程方式设置触发器,如下所示:

function startCustomTrigger()
{
  
  //first remove all existing triggers - for safty
   removeTriggers(false);
  
  //script will run every minute defined  
  ScriptApp.newTrigger('StartProcess').timeBased().onWeekDay(ScriptApp.WeekDay.TUESDAY).onWeekDay(ScriptApp.WeekDay.WEDNESDAY).onWeekDay(ScriptApp.WeekDay.THURSDAY).atHour(11).everyMinutes(10).create();
  
  
  //script will run every minute defined  
  ScriptApp.newTrigger('StopProcess').timeBased().onWeekDay(ScriptApp.WeekDay.TUESDAY).onWeekDay(ScriptApp.WeekDay.WEDNESDAY).onWeekDay(ScriptApp.WeekDay.THURSDAY).atHour(2).create();
 
}


function StopProcess()
{
   //first remove all existing triggers - for safety
   removeTriggers(false);`enter code here`
  
  //script will run every minute defined  
  ScriptApp.newTrigger('startCustomTrigger').timeBased().onWeekDay(ScriptApp.WeekDay.TUESDAY).onWeekDay(ScriptApp.WeekDay.WEDNESDAY).onWeekDay(ScriptApp.WeekDay.THURSDAY).atHour(10).create();
  
}

您将需要设置很多触发器来执行此操作。

  • 您需要三个每周触发器;每三个中的每一个到 运行 天
  • 这三个触发器,将以务实的方式每 10 分钟创建一个 运行 的触发器。
  • 您还需要三个每周触发器;每三个中的每一个到 运行 关闭每 10 分钟 运行ning 的触发器的天数,否则,它们将永远 运行 继续

因此,您需要七个触发器。在那个特定的一天三到 运行,然后从上午 10 点开始每 10 分钟创建一个到 运行 的触发器。一个触发器将在上午 10 点开始并无限期地保持 运行ning(直到您将其关闭)。以及三个触发器来停止每 10 分钟 运行ning 的触发器。

在特定日期 运行 的触发器应手动设置。因此,将手动设置 6 个触发器。需要从代码中创建和删除每 10 分钟 运行s 的触发器。

六个触发器是"Week timer",到运行在特定的一天,只需要运行一次就可以创建一个触发器,每10天运行分钟。我 运行 他们比你想要的 10 分钟触发器提前一个小时 运行,只是为了确保他们已经准备好了。

您还可以考虑使用一个每 10 分钟运行一次的触发器,并且在触发器函数内,您可以检查时间和工作日。仅当满足所有条件时才执行代码,否则 returns 什么都不做。

function startCustomTrigger()
{
  ScriptApp.newTrigger('StartProcess').timeBased().everyMinutes(10).create();
}

function StartProcess() {

  var date = new Date();  
  var day = date.getDay();
  var hrs = date.getHours();

  if ((day >= 2) && (day <= 4) && (hrs >= 11) && (hrs <= 14)) {

     // Add your code here

  }

}