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

时间:2016-12-16 00:03:32

标签: javascript google-apps-script google-sheets

我是一个完全的初学者。

我为解决方案阅读了Google文档。 我搜索了相同的互联网。 我也搜索了StackOverflow。

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

  

我理解的是,.Flush有助于在发生功能时执行这些功能,而不将它们捆绑在一起。

我是对的吗?如果没有,那么外行人的意思是什么?请用一个简单的例子来表示。感谢。

1 个答案:

答案 0 :(得分:8)

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

首先,你们是官方文件:

  

齐平()

     

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

explainlikeimfive这个比喻怎么样:假设你在用100个苹果计算一棵树上的苹果。

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

123456等等。

这就像在循环中执行flush()一样,因为在每次count操作之后你都要写字。你最终会写你的论文 100次,让我们假设用你的手写字比用你的眼睛计算要花费更长的时间。

“优化”过程(在这种情况下)将使用你的内存/缓存并在写下数字之前计算5个苹果,所以你要写

5101520等等。

现在你最终会写你的论文 20次(减少80%),尽管必须计算相同数量的苹果,你已经减少了你必须写的数量所以,通过减少运行时间,你会看到极大的性能优势。

这大致转化为Apps脚本操作的工作方式。与在所有计算中一样,内存中操作是最快的执行,并且读/写(也称为输入/输出或I / O)操作是最慢的(检查Execution Transcript以获得进一步证明)。这就是为什么当您特别需要在代码执行的特定时刻将数据写入电子表格时,只应使用flush()

希望这有帮助。