所以我试着每小时运行一次功能。此功能的目的是更新计划以查看当前时间以及该时间点发生的事件。
我设置了一个小时计时器的时间驱动项目触发器,然而,它在运行时似乎不一致,有时它在小时前5分钟,其他时间在小时后10分钟。
我希望功能在一小时内运行,有没有办法做到这一点?
答案 0 :(得分:2)
这是非常可能的:您要做的是在运行结束时为下一次运行设置触发器。
因此,您可以手动运行该功能,最后插入此代码段:
ScriptApp.newTrigger("FUNCTION HERE")
.timeBased()
.at(new Date(new Date().setHours(new Date().getHours()+1,0,0,0))
.create();
但是,因为在某种程度上,这是一个微弱的触发链(如果一个失败,它会赢得下一个小时的继续运行)你有几个选择。
我会创建一个每天运行的故障安全功能,并确保上述功能正常工作(如果没有,再次启动链)。我还要在try catch block中包装此函数中的其他内容(滚动到页面底部:无论如何,您应该为所有函数执行此操作),并将上面的代码添加到该函数中,以便即使你的函数失败了,它仍然会在下一次运行(或者把它放在函数的开头)。
答案 1 :(得分:0)
我一直在努力寻找触发器,并发现它们只有在它们运行的时间并不重要时才可用。
根据文档,计时器的运行时间为15分钟。所以你不能确定它是在时间T还是在时间(T + 15分钟)运行。
我还发现使用未记录的addTimer确实可以在特定时刻准确运行。见How to implement a trigger or timer that runs after a few seconds using GAS
看看我自己提出的关于如何使用addTimer的答案