gpt4 book ai didi

google-apps-script - 如何避免 Google 电子表格中的 'exec maxSimultaneous' 限制?

转载 作者:行者123 更新时间:2023-12-04 06:07:57 33 4
gpt4 key购买 nike

我正在使用 Google 电子表格进行税务管理。我一年内完成的所有财务交易都在电子表格中。由于我所在国家/地区的税收规则非常复杂,因此我开发了许多 JavaScript 函数来帮助我进行计算。我的电子表格中有很多行,大约 1000 行。每一行都有对这些 JavaScript 函数的多个引用。

这个系统以前运行良好,但今天我发现 Google 在 Google 电子表格中安装了某种运行时限制系统,导致我的许多列中止并出现以下错误:

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

经过一些调查,似乎这个时间限制是为了防止脚本运行时间过长。我的情况不同:我的脚本都很短,O(1) 算法除了计算一些数字什么都不做。一个典型的脚本如下所示:

// Calculates the total amount excluding Value Added Tax, given
// an amount including Value Added Tax, and other sorts of information.
function ex_btw(inc_btw, commentaar, soort, btw_verlegd, btw_pct) {
Utilities.sleep(1000);
var soort = soort.toLowerCase();
if (soort == 'eten en drinken'
|| commentaar.match(/treinkaartje/i)
|| commentaar.match(/treinticket/i)
|| commentaar.match(/taxi/i)
|| commentaar.match(/ boek /i))
{
return inc_btw / 1.06;
} else if (soort == 'priveonttrekking'
|| soort == 'boete'
|| soort == 'belasting'
|| commentaar.match(/postzegel/i)
|| btw_verlegd == 'Ja')
{
return inc_btw;
} else {
return inc_btw / (1 + btw_pct);
}
}

然后像这样从单元格调用脚本:

=IF(B6<>""; ex_btw(B6;D6;E6;J6;S6); "")

也许我的问题是我有太多的脚本调用。每行调用大约 6 个这样的脚本,因此对于 1000 行,每个电子表格我调用 6000 次。

我该如何解决这个问题?有没有办法增加执行限制,或者有没有办法让脚本运行得更慢,这样它们就不会达到执行限制?正如您在示例代码中看到的,我已经尝试插入 Utilities.sleep(1000),但这似乎并不能解决问题。我不在乎脚本是否运行缓慢,我只在乎它们完成时没有错误。

我可以付费以提高限额吗?几天后我需要交税。

我考虑过的其他替代方案,但不可行。

  • 使用非 JavaScript 函数。不可行,因为:他们不支持像 Google 电子表格那样的协作。我经常和同事一起检查电子表格,检查我们是否犯了任何错误。这有助于我们双方立即看到对方所做的任何更改。
  • 拥有一个庞大的 JavaScript 函数,它可以遍历行并填充单元格。不可行,因为:

    1. 太容易出错了,和我现在的方法相比很容易出错。
    2. 在我重新运行脚本之前不会自动更新单元格。我希望在更新其他单元格后立即查看任何计算,就像电子表格应该做的那样。
  • 使用 Excel 和 OpenOffice Calc 等其他电子表格。不可行,因为:它们似乎没有提供相同的脚本功能。
  • 编写自己的融资应用。不可行,因为:需要太多,这不是我的核心业务,而且税收规则几乎每年都在变化,所以我必须不断更新应用程序。我可以很快更新电子表格,但编写融资应用程序需要太多时间。

最佳答案

我通过让每个函数随机休眠一段时间来解决这个问题,如下所示:

Utilities.sleep(Math.random() * 5000);

重要的是 sleep 时间是随机的,而不是恒定的。显然,谷歌限制了可以同时使用 CPU 的函数的最大数量。

关于google-apps-script - 如何避免 Google 电子表格中的 'exec maxSimultaneous' 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14604334/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com