2017-04-02 255 views
0

当我运行代码时,出现错误消息(如下所示)。我的本意是在准确的时间创建触发器2017年4月3日20:10在使用GAS的特定时间运行触发器时出错

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] 
+0

我发现这[链接](http://stackoverflow.com/questions/30561061/trigger-every-14-days-starting-on-a-specific-date)。我想你不能在子句中使用多个。 – Cooper

+0

这意味着我们不能用时间创建类型为日期的触发器。如果我指定日期,那么它意味着它将在午夜触发? –

+0

我想你可以创建一个触发器来运行另一个脚本来创建另一个触发器。但是,我希望桑迪错了,但我有点怀疑。 – Cooper

回答

2

您可以创建一个特定的日期和时间新的日期对象,然后用新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() 

希望帮助!

+0

非常感谢@Jack Brown。如果我想以编程方式知道触发器是否创建没有错误,我将如何?因为如果我给日期为2017,02,31,20,17 trig将使用uniq id创建,但实际上并不如日期错误。 –

+0

其实(2017,02,31,20,17)是3月31日,这是一个有效的日期。对于2月份,您将执行此新日期(2017,01,31,20,17),该日期将自动设置为2017-03-03 20:17的下列日期。你可以在这里阅读(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Parameters)。您将不得不以编程方式确定您在日期函数中输入的值是否与使用getFullYear(),getMonth(),getDay()等创建的值相匹配。 –