基于时间的Google脚本 - 应该在上午11点到2点之间运行

时间:2015-02-17 15:48:10

标签: google-apps-script

我正在尝试构建一个应该在每周二,周三和周四上午11点到下午2点以及每10分钟后运行一次的Google脚本。

例如如果今天是星期二..则脚本将在上午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();

}

请知道是否有其他方法可以实现相同目的。

2 个答案:

答案 0 :(得分:2)

您还可以考虑使用每10分钟运行一次的触发器,并且在触发器功能中,您可以检查时间和工作日。只有在满足所有条件的情况下才执行代码,否则它将返回而不执行任何操作。

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

  }

}

答案 1 :(得分:0)

您需要设置许多触发器才能执行此操作。

  • 你需要每周三次触发;每一个都在三个中的每一个上运行 天
  • 这三个触发器将实际创建一个每10分钟运行一次的触发器。
  • 你需要每周三次触发;每一个都在三个中的每一个上运行 关闭每10分钟运行一次的触发器的日子,否则,它们将继续永久运行

所以,你需要七个触发器。三个在特定日期运行,然后创建一个触发器,从上午10点开始每10分钟运行一次。一个触发器将在上午10点开始并无限期地继续运行(直到你关闭它)。还有三个触发器可以阻止每10分钟运行一次的触发器。

Trigger On Day

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

作为“周计时器”的六个触发器,在特定的一天运行,只需要运行一次以创建将每10分钟运行一次的触发器。我比你想要运行10分钟的触发器提前一小时运行它们,只是为了确保它们已经开始运行。