เกิดข้อผิดพลาดในการเรียกใช้ทริกเกอร์ในเวลาที่กำหนดโดยใช้ 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
ฉันพบลิงก์นี้ ฉันเดาว่าคุณไม่สามารถใช้หลายข้อได้   -  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
จาก UI ในตัวแก้ไขสคริปต์ ดูเหมือนว่าคุณสามารถใช้วัตถุ 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
ขอบคุณมาก @แจ็ค บราวน์. ถ้าฉันต้องการทราบโดยทางโปรแกรมว่าทริกเกอร์นั้นถูกสร้างขึ้นโดยไม่มีข้อผิดพลาด ฉันจะทำยังไงล่ะ เพราะถ้าฉันให้วันที่เป็น 2017,02,31,20,17 trig จะถูกสร้างขึ้นด้วย uniq id แต่จริงๆ แล้วไม่ได้เป็นเพราะวันที่ผิด . - person Code Guy; 03.04.2017
comment
จริงๆ แล้ว (2017,02,31,20,17) คือวันที่ 31 มีนาคม ซึ่งเป็นวันที่ที่ถูกต้อง สำหรับเดือนกุมภาพันธ์ คุณจะต้องดำเนินการ Date(2017,01,31,20,17) ใหม่นี้ ซึ่งจะถูกตั้งค่าเป็นวันที่ต่อไปนี้โดยอัตโนมัติ คือ 2017-03-03 20:17 คุณสามารถอ่านเกี่ยวกับเรื่องนี้ได้ที่นี่ . คุณจะต้องกำหนดโดยทางโปรแกรมว่าค่าที่คุณป้อนในฟังก์ชันวันที่ตรงกับค่าที่สร้างขึ้นโดยใช้ getFullYear(), getMonth(), getDay() ฯลฯ - person Jack Brown; 03.04.2017