为什么我们使用SpreadsheetApp.flush();?

IT技术 javascript google-apps-script google-sheets
2021-01-16 15:24:12

我是一个完整的初学者。

我阅读了 Google 文档以获取解决方案。我在互联网上搜索了相同的内容。我也搜索了 StackOverflow 相同。

但。一切似乎都是技术性的。

我的理解是,.Flush 有助于在函数发生时执行它们,而无需将它们捆绑在一起。

我对吗?如果不是,通俗地说是什么意思?请举一个简单的例子。谢谢。

1个回答

当程序员flush()想要确保在继续之前将先前代码的输出和/或效果写入电子表格时,他们将使用如果不这样做flush(),那么代码可能会通过使用一些内置缓存和操作捆绑自动“优化”。一般情况下,你不需要使用flush(),直到您特别DO需要......如果是有道理的。

首先,你旧的官方文档:

冲洗()

应用所有挂起的电子表格更改。有时将电子表格操作捆绑在一起以提高性能,例如在多次调用 Range.getValue() 时。但是,有时您可能希望确保立即进行所有挂起的更改,例如在脚本执行时显示用户数据。

用一个explainlikeimfive类比怎么样:假设您正在数一棵树上有100 个苹果的苹果。

可以单独计算和记录每个苹果,如下所示:

1, 2, 3, 4, 5, 6... 等

这就像flush()在循环中执行 a ,因为您实际上是在每次count操作之后编写你最终会在你的纸上写100 次,假设用手书写比用眼睛数需要更长的时间。

一个“优化”的过程(在这种情况下)是使用你的内存/缓冲区并在写下一个数字之前数 5 个苹果,所以你会写

5, 10, 15, 20... 等

现在你最终会在你的论文上写20 次(减少 80%),尽管必须计算相同数量的苹果,但你减少了你必须做的写次数,所以你会看到一个惊人的表现通过减少运行时间而受益。

这大致转化为 Apps 脚本操作的工作方式。与所有计算一样,内存中操作的执行速度最快,而读/写(又名输入/输出)操作最慢(请检查您的执行记录以获取进一步证明)。这就是为什么您应该只flush()在您特别需要在代码执行的特定点将数据写入电子表格时使用。

希望这可以帮助。