【问题标题】:Google sheets recalculating cell when not neededGoogle 表格在不需要时重新计算单元格
【发布时间】:2017-04-20 12:27:20
【问题描述】:

即使没有更改依赖项,Google 表格是否有任何理由重新计算单元格?我遇到了巨大的 IMPORTRANGES 问题,在重新计算数千个未更改的单元格时造成了巨大的延迟。

为了让这个问题可见,我创建了一个简单的测试电子表格you can visit here

此电子表格包含一个自定义函数,该函数返回一个包含 170'000 个随机值的二维数组,包括当前日期时间,以便我们知道何时调用自定义函数。自定义函数采用 1 个参数,该参数是一个常量。 很多时候,当我打开电子表格时,会调用自定义函数,重新填充所有内容。但是,它不应该,因为自定义函数的唯一参数是常量。

有什么想法吗?

当然这只是一个例子,我写这个是因为我有巨大的电子表格,当我打开它们时需要大约 10 分钟来重新计算它们,即使没有任何改变。

【问题讨论】:

  • 这些问题在 importrange 中很常见。我发现缓解这种情况的最简单方法是将导入移动到您按计划或按需执行的脚本中。
  • 这正是我所做的,我写了一个自定义函数。但是我对自定义函数有同样的问题,这是我的文本和示例的目的。
  • 脚本不会通过电子表格而是通过时间表调用,它会明确写入值而不是公式的结果。这使得数据非易失性。
  • 这种解决方法有太多缺点: 1. 您无法看到脚本正在填充的范围。如果您覆盖某些单元格,则不会发出警告。使用公式,如果您覆盖一个值,表格会通知您正在编写数组公式的空间 2. 维护:当您在电子表格中有 15 个导入时,维护起来要困难得多 我的帖子的目的更多是为了了解不需要的重新计算背后的逻辑。

标签: google-apps-script google-sheets google-apps custom-function


【解决方案1】:

重新计算

Google 电子表格在打开时会重新计算。可能存在一些限制,例如:

  • 如果通过打开电子表格或通过 IMPORTDATA、IMPORTHTML、IMPORTRANGE、IMPORTXML 等基于时间的阈值重新计算服务器内置函数和自定义函数,它们可能会被“冻结”。

AFAIK 某些计算的“冻结”不包括在 Google Docs Help 中,但这种限制通常由 Google 应用于免费消费者帐户(通常具有 gmail.com 域电子邮件地址的帐户),以便“防止滥用”。 “付费”(现在称为 G Suite)帐户可能有“更高的配额”。

解决方案

正如 cmets 对该问题的建议,如果这是一个问题,您应该考虑如何构建电子表格。

基本是减少工作表、行、列和公式的数量,以减少大小和复杂性。

如果您使用公式进行只需要一次的计算,请将这些公式替换为其结果。在这种情况下粘贴为值很方便。

仅应按需进行的其他计算应移至脚本或外部电子表格,您可以从中导入计算值。

【讨论】:

  • “电子表格在打开时会重新计算。” :这不是真的......我可以打开我的电子表格几次,仍然看到相同的值。一段时间后(可以是 1 分钟,也可以是 2 小时),它们会在打开的电子表格上重新计算。
  • @Rafael:如果您在很短的时间内打开电子表格,那么您是对的,对于像它在“这不是真的”问题上链接的电子表格,但如果您稍等,假设 10 分钟,它将重新计算。
  • @Rafael:我更新了我的答案。此时它是“部分答案”。也许以后我可以添加一些参考资料。
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
相关资源
最近更新 更多