首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新的Google表格自定义功能有时会无限期地显示“正在加载...”

新的Google表格自定义功能有时会无限期地显示“正在加载...”
EN

Stack Overflow用户
提问于 2019-05-26 23:50:41
回答 2查看 0关注 0票数 0

特定于:“新”谷歌表

这是谷歌在新表中强调的已知问题

问题:如果您在google-apps-script中为google工作表编写复杂的*自定义函数,您偶尔会遇到在单元格周围显示红色错误框的单元格,文本为“正在加载...”

谷歌建议:

如果发生这种情况,请尝试重新加载页面或重命名该函数并更改对新名称的所有引用。

但是对于遇到此问题的其他开发人员(以及谁无法逃避“加载...”错误),我在下面的答案中写了我的发现,如何一致地克服这个问题(有限制)。

*我们将此问题视为Google Sheet无限期“错误......加载数据”问题的规范答案。它不仅限于复杂或慢速的功能。

EN

回答 2

Stack Overflow用户

发布于 2019-05-27 08:34:12

FWIW,我刚刚遇到这个问题,罪魁祸首最终成为一个getRange()将数千行拉入数组的调用。它会定期挂在“正在加载...”消息上。

我通过将该范围放入文档缓存来解决它。它有点kludgy,因为缓存只存储字符串,而不是数组,但是.split(',')当你需要访问数组时,你可以强制它回到数组中。

(在我的例子中,它是一个单一的数组。可能有一种方法可以使用双数组,通过将每个行或列发送到自己的缓存中,或者一次读取缓存值N个项目,每个N成为它自己的阵列)。

这是我的代码中的相关位:

代码语言:javascript
运行
复制
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("mySheet"); //search the "mySheet" sheet
// is the big list already in the cache?
var cache = CacheService.getDocumentCache();
var cached = cache.get("columnValues");
if (cached != null) {
   var columnValues = cached.split(','); // take the cached string and make it an array
} else { // it's not in the cache, so put it there
  var column = 1; // the column with your index
  var columnValues = sheet.getRange(2, column, sheet.getLastRow()).getValues(); // first row is header
  cache.put("columnValues",columnValues,60000); // this forces the array into a string as if you used .join() on it
}

这绝对是Apps脚本中的一个错误 - 如果没有超时或错误消息,getRange()不应该挂起。但至少有一个解决方法。这是我打开的错误,我也从我的工作表中放入了完整的code.gs。

票数 0
EN

Stack Overflow用户

发布于 2019-05-27 09:31:57

一个原因:需要授权的权限。

至于{这个问题,更好地表达了自定义函数的单元格结果,显示了令人作呕的模糊消息“正在加载...错误:加载数据...”},实际上在所有实例都是相同的情况下/类似的自定义函数调用显示此错误,是Google表格需要运行脚本的权限(通常另外:意味着过去它不需要这些),所以代替{表现得恰当:然后提示用户获取这些权限否则返回该错误},Sheets反而挂起了这个令人作呕的模糊错误。

可能需要1个或更多的附加权限:

  1. 谷歌应用程序脚本已经重写了他们的权限结构 - 现在这个问题刚好发生在我身上,根据我的内部注释O80U3Z。
  2. 您使用的代码或某些库进行更改需要更多访问权限...但在这种情况下,您有更好的机会猜测这个令人作呕的模糊错误的原因,所以希望不会在这里阅读。

为了解决这个问题,我明确地运行了我的GAS电子表格代码:单击我的一个自定义菜单函数,然后在“脚本编辑器”中运行我的一个自定义JS函数,特别是'onOpen()',因为这是最全面的。第一个通过弹出'新的权限提升了我,通过弹出'需要授权 应用程序“MM6ZBT(MM6Z83脚本)”需要授权才能运行。'虽然onOpen()也在GAS修改其权限的情况下这样做,因为我们使用了这个工作表。然后,因为我仍然得到这个“正在加载...”错误,我重新加载了网页(所以表格),并且,至少对于这个令人作呕的模糊错误的情况,它已经消失了,计算工作正常: - )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100009055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档