【问题标题】:Error running trigger at specific time using GAS使用 GAS 在特定时间运行触发器时出错
【发布时间】:2017-04-02 14:50:59
【问题描述】:

我在运行代码时收到错误消息(如下)。我的意图是在 2017-04-03 20:10 的确切时间创建一个触发器

ScriptApp.newTrigger('myfunction').timeBased().atDate(2017,04,03).atHour(20).nearMinute(10).create();

日志

[17-04-02 20:16:53:455 IST] TriggerBuilder.timeBased() [0 seconds]
[17-04-02 20:16:53:456 IST] ClockTriggerBuilder.atDate([2017, 4, 3]) [0 seconds]
[17-04-02 20:16:53:456 IST] ClockTriggerBuilder.atHour([20]) [0 seconds]
[17-04-02 20:16:53:461 IST] Execution failed: Error: Already chosen a specific date time with at() or atDate(). (line 109, file "Code") [11.583 seconds total runtime]

【问题讨论】:

  • 我找到了这个link。我猜你不能使用多个 at 子句。
  • 这意味着我们不能创建日期类型的触发器。如果我指定日期,则意味着它将在午夜触发?
  • 我想您可以创建一个触发器,该触发器运行另一个脚本,该脚本创建另一个触发器。但是是的,我希望桑迪对此有误,但我有点怀疑。
  • 但是脚本编辑器是可以的,不是吗?一次计时器
  • 从脚本编辑器的 UI 看来,您可以使用日期时间对象。

标签: google-apps-script triggers google-docs google-docs-api


【解决方案1】:

您可以创建一个具有特定日期和时间的新日期对象,然后使用 new trigger().At(date)(不要与 atDate() 函数混淆)在该日期和时间创建触发器。

var dt = new Date(2017,03,03,20,10)
//Month index starts from 0 i.e. Jan =0,Feb=1... So on
 ScriptApp.newTrigger('myFunction').timeBased().at(dt).create()

希望有帮助!

【讨论】:

  • 非常感谢@Jack Brown。如果我想以编程方式知道触发器的创建是否没有错误,我将如何?Coz 如果我将日期指定为 2017,02,31,20,17,则将使用 uniq id 创建触发器,但实际上不会,因为日期错误.
  • 其实(2017,02,31,20,17)是3月31日,这是一个有效的日期。对于二月,您将执行此新日期(2017,01,31,20,17),它将自动设置为以下日期 2017-03-03 20:17。你可以阅读它here。您必须以编程方式确定您在日期函数中输入的值是否与使用 getFullYear()、getMonth()、getDay() 等创建的值相匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
相关资源
最近更新 更多