【问题标题】:Why do we use SpreadsheetApp.flush();?为什么我们使用 SpreadsheetApp.flush();?
【发布时间】:2020-11-11 12:39:24
【问题描述】:
我是一个完全的初学者。
我阅读了 Google 文档以获取解决方案。
我在互联网上搜索了相同的内容。
我也搜索了 StackOverflow 。
但是。一切似乎都是技术性的。
我的理解是,.Flush 有助于在功能发生时执行它们,而不是将它们捆绑在一起。
我说的对吗?如果不是,外行术语是什么意思?请举一个简单的例子。谢谢。
【问题讨论】:
标签:
javascript
google-apps-script
google-sheets
【解决方案1】:
当程序员想要确保在继续之前将先前代码的输出和/或效果写入电子表格时,他们将使用flush()。如果你不flush(),那么代码可能会通过使用一些内置的缓存和操作捆绑来自动“优化”。一般来说,您不需要使用flush(),除非您特别确实需要...如果这有意义的话。
首先,你的官方文档:
刷新()
应用所有待处理的电子表格更改。电子表格操作有时会捆绑在一起以提高性能,例如在多次调用 Range.getValue() 时。但是,有时您可能希望确保立即进行所有未决更改,例如在脚本执行时显示用户数据。
explainlikeimfive 的类比怎么样:假设您正在数一棵树上的苹果,有 100 个苹果。
您可以单独计数并记录每个苹果,如下所示:
1、2、3、4、5、6...等
这就像在循环中执行flush(),因为您实际上是在每个count 操作之后编写。你最终会在你的论文上写 100 次,让我们假设用你的手写字比用你的眼睛数数需要更长的时间。
一个“优化”的过程(在这种情况下)是在写下一个数字之前使用你的内存/缓冲区并数 5 个苹果,所以你会写
5、10、15、20...等
现在你最终会在你的论文上写 20 次(减少 80%),尽管必须计算相同数量的苹果,但你已经减少了你必须写的次数这样做,因此您会看到通过减少运行时间来获得巨大的性能优势。
这大致可以转换为 Apps 脚本操作的工作方式。与所有计算一样,内存中的操作执行速度最快,而读/写(也称为输入/输出)操作最慢(请查看您的Execution Transcript 以获得进一步的证明)。这就是为什么您应该只在您特别需要在代码执行的特定点将数据写入电子表格时才使用flush()。
希望这会有所帮助。