1

我的谷歌电子表格突然出现以下错误:

error: Service invoked too many times in a short time: exec maxSimultaneous. Try Utilities.sleep(1000) between calls.

大多数错误都出现在包含 vlookup 的单元格中。一些错误出现在具有我自己的自定义函数的单元格中,尽管大多数具有自定义函数的单元格都可以正常工作。

知道 exec maxSimultaneous 是什么,如何避免错误以及 2 天前 Google 的政策 2012 年 5 月 11 日发生了什么变化,这会突然开始引起问题吗?

4

2 回答 2

1

由于错误出现在具有标准功能的单元格上。这不是真正的 Apps 脚本问题,而是电子表格问题。

但我很确定问题出在您的自定义函数上。因为与内置函数不同,自定义函数不会立即全部评估。电子表格触发每个运行,并在每个单独返回结果时触发。然后,在每次返回时,电子表格应用程序必须重新计算依赖于该单元格的所有函数,即您的 vlookups。由于这种行为,您同时触发了太多的 vlookup 重新计算,并达到了这个maxSimultaneous限制。

我对您的建议与我在解释 Apps Script 自定义函数的问题时给大家的建议相同(远远超出了这个问题)。不要使用自定义函数!

我知道它们看起来很漂亮,易于开发且易于使用。但是他们有很多问题。如果您将方法更改为“标准”脚本,您的电子表格将会快得多。您可以通过菜单或图像按钮手动触发计算,或通过触发器自动onEdit触发计算。

于 2012-11-08T10:39:32.343 回答
0

建议:使用 Utilities.sleep(1000) - 当您多次调用 GAS 函数时往往会出现。当我尝试获得大约 30 行的行高时,我得到了这个。我怀疑进行网络调用的 GAS 功能会导致这种情况。

一个常见的原因是使用 range.getValue 而不是 range.getValues

另外,我知道 vlookup 很慢,而数据库功能更快。

于 2012-11-08T08:19:01.110 回答