3

我编写了一个 Google Apps Script UiApp 应用程序,其中包含近 1000 行代码以及相当数量的处理程序和回调。该应用程序运行良好,但随着代码的增长,该应用程序突然收到很多“发生意外错误”的消息。错误消息在应用程序加载时出现并且是间歇性的。我可以尝试一分钟的应用程序并得到错误。然后刷新,错误消失。再次刷新,错误很可能再次出现。它们出现在测试和生产网址中。

因为错误是随机的,我无法将其追踪到任何特定的代码行,是否存在可能导致此问题的处理限制?Google Apps 对行、小部件或处理程序有限制吗?如果是这样,这些错误是否会导致这些错误?有没有办法增加限制?我能做些什么来追踪这个问题吗?

4

2 回答 2

1

是的,Google Apps 脚本引擎在您可以进行的回调数量、执行脚本所花费的时间等方面存在各种限制。我们的经验是您应该保持代码尽可能小尽可能将可能需要很长时间的东西模块化。如果您将代码与电子表格结合使用,请将电子表格用作存储中间步骤结果的容器,并将您的代码分解为多个脚本,这些脚本在完成后将相互调用。它会使你的代码更复杂,但它会更可靠地工作。如果您的代码正在执行 Google Apps 脚本从未设计过的事情,请将代码移到 Google App Engine 或其他容器中(尤其是在您需要服务器端 JavaScript 时)。

于 2013-01-25T19:13:43.463 回答
1

通常,“发生意外错误”消息归因于您的处理程序尝试使用尚未创建并添加到您的应用程序的元素。例如,如果您尝试在某个面板上运行一个处理程序,该面板很可能存在于您的代码中某个函数的某个位置,如果面板尚未创建,您将收到意外错误。

遵循代码中的操作和函数流,查看是否尝试在某个元素上执行某项操作,该元素可能存在于某处的函数中,但尚未添加到您的应用程序中。

此外,如果您尝试通过“.forTargets(app.getElementById('myElement'))”处理具有 Id 的元素,请仔细检查 Id 的名称。如果名称错误,您也会收到该错误。

虫子挤压可能是一种耗时的、令人毛骨悚然的体验!当您的代码开始变成意大利面条式代码时,这些错误往往会突然出现。您可能必须返回并重新设计和重新编写以清理内容。

于 2013-01-26T15:48:20.573 回答