Timer 安排一个功能在小时内每小时运行一次
所以我试着每小时运行一个函数。此函数的作用是更新计划,以查看当前时间以及该时间点正在发生的事件 我在一个小时计时器上设置了时间驱动的项目触发器,但是,它在运行时似乎不一致,有时在一小时前5分钟,有时在一小时后10分钟Timer 安排一个功能在小时内每小时运行一次,timer,google-apps-script,Timer,Google Apps Script,所以我试着每小时运行一个函数。此函数的作用是更新计划,以查看当前时间以及该时间点正在发生的事件 我在一个小时计时器上设置了时间驱动的项目触发器,但是,它在运行时似乎不一致,有时在一小时前5分钟,有时在一小时后10分钟 我希望函数在小时内运行,有没有办法做到这一点?这是很有可能的:您要做的是在运行结束时为下一次运行设置触发器 因此,您需要手动运行函数一次,并在最后插入以下代码段: ScriptApp.newTrigger("FUNCTION HERE") .timeBased
我希望函数在小时内运行,有没有办法做到这一点?这是很有可能的:您要做的是在运行结束时为下一次运行设置触发器 因此,您需要手动运行函数一次,并在最后插入以下代码段:
ScriptApp.newTrigger("FUNCTION HERE")
.timeBased()
.at(new Date(new Date().setHours(new Date().getHours()+1,0,0,0))
.create();
但是,因为在某些方面,这是一个脆弱的触发器链(如果一个触发器失败,它将在下一个小时内不会继续运行),所以您有一些选择
我会做一个每天运行的故障保护功能,并确保上述功能正常工作(如果没有,请重新启动链)。我还将把这个函数中的任何其他内容包装成一个(滚动到页面底部:您应该始终对所有函数执行此操作),并将上述代码添加到该函数中,以便即使您的函数失败,它下次仍将运行(或将其放在函数的开头).我自己一直在努力使用触发器,发现只有在触发器运行的时间无关紧要的情况下,它们才可用 根据文件记载,计时器的运行时间为15分钟。因此,您无法确定它是否将在时间t或时间(t+15分钟)运行 我还发现,使用未记录的addTimer确实允许在特定时刻准确运行。见
看一看我在如何使用addTimer的问题上给自己提供的答案如果它对您有帮助,请看上面我的答案。有一种方法可以做到这一点,而不需要任何未记录的方法。我已经为子孙后代测试了我的答案,它通常在几秒钟内有效(如果不是在精确的一分钟内),你的程序是显而易见的。我也试过了。我发现它不够可靠,特别是如果你想在短时间内运行一个函数。起初,我试图每隔几秒钟使用它。后来我尝试每隔15分钟使用一次-->仍然不可靠。只有在执行时间并不重要的情况下,它才是可接受的解决方案。目前,我只使用它每5小时30次更新一次缓存(因为缓存中的数据可以存储6小时),并结合addTimer(因此,如果一个失败,另一个可能不会执行失败),我不想重复,但这是针对上面的代码,它在特定时间,而不仅仅是每小时触发。美妙之处在于,虽然这需要更多的维护(每次运行都要重新运行),但它使用的一次性触发器最长可达一分钟(我同意这很可能不会在亚分钟的时间间隔内工作,但我已经测试了这种方法,并且它始终按要求的精确分钟运行)