1

是否有捕捉到这个 GAS 错误:“超过最大执行时间”

我的意思是用 try ... catch(e) // 捕获它对我不起作用。

谢谢

4

3 回答 3

2

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

于 2013-01-14T18:39:12.667 回答
1

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

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

于 2015-07-02T21:50:08.040 回答
-2

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

即使您立即意识到自己有什么问题,您也不能在 24 小时内立即重新尝试使用 Google 脚本- 从而显着减慢正在进行的开发,并可能迫使开发人员做一些其他工作,转移他的注意力/“注意力流”远离当前的问题。这几乎总是不好的。

我的产品(“IBM OLIVER CICS 测试/调试”——参见Wikipedia 文章)在大约 37 年前解决了这个问题——以及许多其他问题——通过对任何特定事务设置时间限制并拦截由此产生的超时,允许以下选项:-

  1. 继续或
  2. 检查/修改变量
  3. “手动”重试(同时)或
  4. 中止。

谷歌可以很容易地实施这种方法——如果执行时间看起来太长,可以通过“暂停”。我对 OLIVER 中的其他资源有类似的解决方案 - 例如过多的 API 调用(“可能的宏循环”)和过多的内存使用。

似乎需要像我这样的“老前辈”来解决“从一开始”就存在的问题(当然是在想到 PC 之前)。

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

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

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

于 2016-01-31T13:46:10.837 回答