Ошибка запуска триггера в определенное время с использованием GAS

Я получаю сообщение об ошибке (ниже), когда запускаю код. Я намерен создать триггер в точное время 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]

person Code Guy    schedule 02.04.2017    source источник
comment
Я нашел эту ссылку. Я думаю, вы не можете использовать несколько предложений at.   -  person Cooper    schedule 02.04.2017
comment
Это означает, что мы не можем создать триггер типа дата со временем. Если я укажу дату, значит, она будет запущена в полночь?   -  person Code Guy    schedule 02.04.2017
comment
Я думаю, вы могли бы создать триггер, который запускает другой скрипт, который создает другой триггер. Но да, я надеюсь, что Сэнди ошибается, но я немного в этом сомневаюсь.   -  person Cooper    schedule 02.04.2017
comment
Но это возможно из редактора скриптов, не так ли? Однажды   -  person Code Guy    schedule 02.04.2017
comment
Судя по пользовательскому интерфейсу в редакторе сценариев, вы можете использовать объект datetime.   -  person Cooper    schedule 02.04.2017


Ответы (1)


Вы можете создать новый объект даты с определенной датой и временем, а затем использовать новый 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()

Надеюсь, это поможет!

person Jack Brown    schedule 02.04.2017
comment
Большое спасибо @Jack Brown. Если я хочу программно узнать, создан ли триггер без ошибок, как я это сделаю? Потому что, если я укажу дату 2017,02,31,20,17, триггер будет создан с уникальным идентификатором, но на самом деле это не так, поскольку дата неверна . - person Code Guy; 03.04.2017
comment
На самом деле (2017,02,31,20,17) — это 31 марта, что является действительной датой. Для февраля вы должны сделать эту новую дату (2017,01,31,20,17), которая будет автоматически установлена ​​​​на следующую дату 2017-03-03 20:17. Вы можете прочитать об этом здесь . Вам нужно будет программно определить, соответствуют ли значения, которые вы ввели в функцию даты, тому, что было создано с помощью getFullYear(), getMonth(), getDay() и т. д. - person Jack Brown; 03.04.2017