Google apps script 为特定定期窗口安排Google应用程序脚本功能

Google apps script 为特定定期窗口安排Google应用程序脚本功能,google-apps-script,crontrigger,Google Apps Script,Crontrigger,我正在尝试安排应用程序脚本功能。我需要这封邮件从上午11点到晚上9点每2小时触发一次Mon-Sat 我编写了以下代码来为每天创建触发器: function createTriggers() { var days = [ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY, ScriptApp.WeekDay.WEDNESDAY, ScriptApp.We

我正在尝试安排应用程序脚本功能。我需要这封邮件从上午11点到晚上9点每2小时触发一次Mon-Sat

我编写了以下代码来为每天创建触发器:

function createTriggers() {

  var days = [ScriptApp.WeekDay.MONDAY, 
              ScriptApp.WeekDay.TUESDAY,
              ScriptApp.WeekDay.WEDNESDAY, 
              ScriptApp.WeekDay.THURSDAY, 
              ScriptApp.WeekDay.FRIDAY,
              ScriptApp.WeekDay.SATURDAY];

  for (var i=0; i<days.length; i++) { 
    ScriptApp.newTrigger('emailDashboard')
      .timeBased().onWeekDay(days[i])
      .everyWeeks(1).everyHours(2).create();
  }
}
函数createTriggers(){
var days=[ScriptApp.WeekDay.MONDAY,
ScriptApp.WeekDay.周二,
ScriptApp.WeekDay.周三,
ScriptApp.WeekDay.周四,
ScriptApp.WeekDay.FRIDAY,
ScriptApp.WeekDay.SATURDAY];

对于(var i=0;i您的问题来自于过度的特殊性。您使用的许多选项,如工作日的
和每周的
都是相互排斥的。您可以在其上阅读有关该类的更多信息

一种更简单的方法是安排所需的粒度:

ScriptApp.newTrigger("myFunction").timeBased().everyHours(2).create();
然后检查当前时间是否符合您的条件:

  • 今天不是星期天
  • 当地时间上午11点以上
  • 当地时间晚上9点以下一小时
  • 值得注意的是,当您使用小时级别的特定性时,Google将以其选择的分钟值运行您的函数

    与其他触发功能一样,有一个可用的

    假设您只关心UTC值(事件对象中所有值的区域设置)的示例鉴别器:

    函数getsCalledByClockTrigger(e){
    如果(!e)抛出新错误(“从脚本编辑器调用”);
    else console.log(e);//在Stackdriver日志中显示此事件对象。
    //检查是否不是UTC星期日。
    如果(e[“星期几”]==7)
    返回;
    //检查UTC小时是在上午11点到晚上9点之间。
    如果(电时<11 | |电时>21)
    返回;
    /*做事*/
    }
    

    使用
    var now=new Date()
    并检查各种属性(例如)来识别非UTC值可能是最简单的。

    您所拥有的有什么问题?您的问题是什么?当我运行上面的内容时,我得到以下错误:“时钟触发器的重复间隔已经设置好了。(第79行,文件“code”)”我找不到关于该回复的任何信息,它实际上不会触发电子邮件发送。我想我上面的内容会让我每2小时收到一封周一至周六的电子邮件。我不知道如何从上午11点开始到晚上9点结束。谢谢!我在这里找到了另一个问题的片段[@S1ick1我还添加了一些示例代码
    function getsCalledByClockTrigger(e) {
      if(!e) throw new Error("Called from the Script Editor");
      else console.log(e); // Show this event object in Stackdriver logs.
    
      // Check that it isn't UTC Sunday.
      if(e["day-of-week"] === 7)
        return;
    
      // Checking the UTC hour is between 11 AM and 9 PM.
      if(e.hour < 11 || e.hour > 21)
        return;
    
      /* Do stuff */
    }