Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 自定义应用程序脚本函数未在Google工作表的某些行上执行_Google Apps Script_Google Sheets_Google Docs_Google Apps Script Api - Fatal编程技术网

Google apps script 自定义应用程序脚本函数未在Google工作表的某些行上执行

Google apps script 自定义应用程序脚本函数未在Google工作表的某些行上执行,google-apps-script,google-sheets,google-docs,google-apps-script-api,Google Apps Script,Google Sheets,Google Docs,Google Apps Script Api,我已经编写了一些应用程序脚本代码来从雅虎和Fizviz获取股票数据,有一段时间它工作得很好 自从我到达表中一定数量的行(大约20个标记)后,一些特定的行就停止执行,单元格永远显示“加载”。该行的应用程序脚本函数不会显示在stackdriver日志中。如果我对表进行排序以触发刷新,则会执行这些ticker,但其他一些不同的特定行会停止执行,因此问题不应该是ticker。另外,奇怪的是,对于不同的排序顺序,不执行的行数是不同的,有时我可以找到大多数行执行的排序顺序。如果我删除所有行,除了不执行的行之

我已经编写了一些应用程序脚本代码来从雅虎和Fizviz获取股票数据,有一段时间它工作得很好

自从我到达表中一定数量的行(大约20个标记)后,一些特定的行就停止执行,单元格永远显示“加载”。该行的应用程序脚本函数不会显示在stackdriver日志中。如果我对表进行排序以触发刷新,则会执行这些ticker,但其他一些不同的特定行会停止执行,因此问题不应该是ticker。另外,奇怪的是,对于不同的排序顺序,不执行的行数是不同的,有时我可以找到大多数行执行的排序顺序。如果我删除所有行,除了不执行的行之外,它将保持不执行状态

我试图做出不同的解释,在这一点上,我觉得这一切都像是随机的黑魔法

有没有人和我有同样的经历

如果有人好奇,代码就在这里,工作表直接使用的主要入口点函数在FinanceData.gs中:


编辑:非常感谢大家对数组公式的建议。我试图使用它,但当我更改筛选/排序时,它无法处理我的筛选表。也许我没有正确地使用它?

我试图重现您的错误,但目前它工作正常,只是有点慢。这可能是一个配额问题,我可能还没有面对它。 为了避免超过配额,我建议您将自定义函数调用包装在
=ARRAYFORMULA()
中。这样,n个函数调用将在一个函数中批处理


我认为你的应用程序逻辑不适合在谷歌应用程序脚本上运行。您必须调整它以减少响应时间,否则自定义函数调用将超时。

您是否超过了配额?使用单个数组公式而不是多个数组公式formulas@JamesD我不这么认为,因为只有我的precache触发器在进行网络调用,单元格调用的方法只是在另一个临时缓存表中查找值。至少我没有看到任何与从另一张表读取值相关的配额?在这种情况下,它会不会给我一个关于超出配额的错误?@我试过了,但是一旦我更改了过滤器或排序,行就会变得一团糟。是否有一种方法可以使用数组公式并与表筛选/排序兼容?没有。但您可以使用查询进行筛选/排序。类似于
=query(自定义乐趣,“where Col1='example'sort by Col1”)
感谢您的回复!不幸的是,arrayformula不起作用,因为我需要能够对表进行排序和筛选,但它仍然是一个好主意。W.r.t.响应时间,my get函数非常快,因为它们只查看缓存,不进行任何网络调用。precache服务正在进行网络调用并将值放入缓存。理论上,get调用应该立即返回。我最终更改为arrayformula,并调整我的工作表以允许筛选/排序!它现在完全可以工作了!奇怪的是,这不是配额或响应时间慢的问题,只是谷歌服务器出了问题。是的,有时候很难理解到底发生了什么。我很高兴它成功了!奇怪,我不能确定你的答案是正确的?堆栈溢出是否有问题?我不知道,请稍后再试。我看你试过了。