捕获超过最长执行时间?

时间:2013-01-14 15:19:52

标签: google-apps-script

是否存在捕获此GAS错误:“超出最长执行时间”

我的意思是抓住尝试... catch(e)//到目前为止它对我不起作用。

由于

3 个答案:

答案 0 :(得分:2)

如您对问题的评论所述,那是不可能的。但是,但是,您可以在执行开始时在scriptDB或属性中设置一个标志,并在执行到正常结束时清除该标志,这样您就可以在下一次运行期间找到您的脚本在最后运行时的常规结束时间,如果没有,请尝试采取纠正措施。

答案 1 :(得分:1)

上面的答案是正确的;这是不可能的。 pbhd提到的解决方法的一个简单替代方法是简单地跟踪脚本的运行时间(例如,定期比较new Date().getTime()的结果)并运行您之前在catch语句下包含的任何内容你达到了最长的执行时间。最长为6分钟(reference)。

这样,您就不必捕获错误 - 您可以抢占它。

答案 2 :(得分:-2)

在正常测试期间,可能会意外地创建一个无限(或非常长时间运行)的循环,该循环消耗100%的每日执行时间限制。

即使您意识到您的错误立即,您也无法立即重新尝试使用Google脚本 24小时 - 从而显着降低正在进行的开发速度迫使开发人员做一些其他的工作,把重点放在"关注流"远离当前的问题。这几乎总是坏事。

我的产品(" IBM OLIVER CICS测试/调试" - 请参阅Wikipedia article)解决了这个问题 - 以及许多其他人 - 大约37年前 - 通过对任何设置时间限制特定的事务并拦截产生的时间,允许选项: -

  1. 继续或
  2. 检查/修改变量
  3. "手动"重试(同时)或
  4. 中止。
  5. 谷歌可以轻松地实施这种方法 - 通过"暂停"如果执行时间看起来太重了。我有一个类似于OLIVER中其他资源的解决方案 - 例如过多的API调用("可能的宏循环")和过多的内存使用。

    它似乎需要一个旧计时器"像我一样为现有的问题提供解决方案"从时间开始" (当然在人们想到PC之前)。

    谷歌当前"解决方案" (即绝对限制)只能帮助谷歌保持自己的服务器不被淹没。他们很容易做出OLIVER多年前所做的事情。顺便说一句,应该没有" IBM"维基百科文章中的前缀 - 这是我自己的产品,一些小丑维基百科编辑将其改为包含前缀。

    (顺便说一句,谷歌不会阻止运行相同s / s的其他脚本 - 可能只使用最小额外的时间(即同一电子表格上的脚本仍然有效)。我试过了将原始脚本重命名为实验,但在很短的时间后停止,超过执行时间"错误。

    GIZ-A-JOB谷歌 - 你知道它的价值!