如何创建年度时间驱动的触发器?

How to create a yearly time-driven trigger?

我正在尝试创建一个基于时间的触发器来永久地每年在指定日期的凌晨 1 点执行我的 incrementCell 函数一次。当试图 运行 低于

ScriptApp.newTrigger("incrementCell").timeBased().atDate(2018, 1, 4).atHour(1).everyWeeks(52).create();

我收到一个 "Already chosen a specific date time with at() or atDate()." 错误。

有趣的是,紧接在下面的行没有出错:

ScriptApp.newTrigger("incrementCell").timeBased().atDate(2018, 1, 4).create();

Google Apps 脚本不支持年度触发器,但您可以使用变通方法。创建每月 1 号 运行 的每月触发器,如果​​月份是一月,运行 实际函数。

function createYearlyTrigger() {
  ScriptApp.newTrigger("shouldTriggerRun")
  .timeBased().onMonthDay(1).atHour(1).create();
}

function shouldTriggerRun() {
  var date = new Date();
  if (date.getMonth() === 0) {
    incrementCell();
  }  
}