我的脚本中的 Google Apps 脚本定时触发器存在问题。
我有一个处理和匹配大量数据(43k 行)的主函数,因此我使用定时触发器来停止进程并从中断处重新启动。它将数据保存在属性服务中。
该函数调用我编写的设置触发函数(设置一秒触发)并立即停止。
调用的触发函数:
// Function to set a timmed trigger to start the main function again.
function setrebootTrigger() {
//manageTriggers(); disabled to see if this speeds things up FYI it didnt :/
//Set a time-based trigger to continue processing after 1 seconds
ScriptApp.newTrigger('organizeData')
.timeBased()
.after(1000)
.create();
// logToSheet("Freeze process trigger created."); disabled currently not needed for debugging
}
无论我将触发器设置为 1 秒、5 秒、20 秒、1/2 秒多长时间,都需要大约 1-3 分钟才能再次激活主要功能。我设置了日志来查看它在从停止处提取数据时是否停止,甚至在每次主函数启动后以及在设置触发器后它自行停止之前都有一个日志,这两个日志有 1-3最小间隔,所以这与触发器本身有关:
15/05/2024 11:58:13 AM: Batch update completed.
15/05/2024 11:58:15 AM: Properties updated. Ending current iteration of loop.
**15/05/2024 11:58:16 AM: freeze process trigger set, freezing process to avoid timeout
15/05/2024 11:59:30 AM: main function started!**
15/05/2024 11:59:31 AM: Set YouTube batch size to 50 and RoosterTeeth batch size to 1500.
15/05/2024 11:59:31 AM: Set desired show name: On The Spot
15/05/2024 11:59:32 AM: Processing new batch of YouTube rows from index 100 to 150.
15/05/2024 11:53:38 AM: Batch update completed.
15/05/2024 11:53:39 AM: Properties updated. Ending current iteration of loop.
**15/05/2024 11:53:40 AM: freeze process trigger set, freezing process to avoid timeout
15/05/2024 11:55:14 AM: main function started!**
15/05/2024 11:55:15 AM: Set YouTube batch size to 50 and RoosterTeeth batch size to 1500.
15/05/2024 11:55:16 AM: Set desired show name: On The Spot
15/05/2024 11:55:16 AM: Processing new batch of YouTube rows from index 50 to 100.
这真的很不一致,当我拉起触发器选项卡时,我可以看到它只是坐在那里什么都不做
来自 https://developers.google.com/apps-script/reference/script/clock-trigger-builder#after(Integer)
之后(持续时间毫秒)
指定触发器运行的当前时间之后的最短持续时间(以毫秒为单位)。实际持续时间可能会有所不同,但不会少于您指定的最短时间。
考虑到上述情况,您所看到的行为不存在任何故障。
当我使用after()创建触发器时,我通常使用60000(一分钟),一般会在那个时间运行。当使用较小的数字时,有时,我必须等待一分钟以上才能激活触发器,并且有几次,它根本不运行。如果您没有遇到触发器根本不运行的问题,那么到目前为止您很幸运。