为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕工程0101907 2019-12-06 09:32:31
我是一个完整的初学者。我阅读了有关解决方案的Google文档。我在互联网上搜索了同样的内容。我还搜索了StackOverflow来查找相同内容。但。一切似乎都是技术性的。据我了解,.Flush有助于在功能出现时立即执行这些功能,而无需将它们捆绑在一起。我对吗?如果不是的话,外行人的含义是什么?并请举一个简单的例子。谢谢。
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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

首先,您以前的官方文档:

flush()

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

怎么样解释类似的类比:假设您是在一个有100个苹果的树上数苹果。

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

123456...等等。

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

一个“优化的”过程(在这种情况下)是在记下数字之前使用您的内存/缓存并计数5个苹果,因此您应该

5101520...等等。

现在,您将最终在纸上书写20次(减少了80%),尽管必须计算相同数量的苹果,但您却减少了必须执行的写操作次数,因此您将获得惊人的性能通过减少运行时间而受益。

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

希望这可以帮助。


查看完整回答
反对 回复 2019-12-06
  • 1 回答
  • 0 关注
  • 506 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号