2016-12-16 103 views
2

我是一個完整的初學者。爲什麼我們使用SpreadsheetApp.flush();?

我閱讀了解決方案的Google文檔。 我在網上搜索了同樣的東西。 我也搜索了StackOverflow的相同。

但是。一切都看起來很技術

我的理解是,.Flush有助於執行功能,當它們發生時不捆綁在一起。

對嗎?如果不是,通俗的說法是什麼意思?請舉個簡單的例子。謝謝。

+0

分享您的片段。無論你嘗試什麼。 –

+0

下面是一個簡單的示例:https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush – FTP

回答

5

當程序員想要確保在繼續執行前將代碼的輸出和/或效果寫入電子表格時,他們將使用flush()。如果你不是flush(),那麼代碼可以通過使用一些內置的緩存和操作綁定來自動「優化」。一般來說,你不需要使用flush(),直到你明確地DO需要...如果這是有道理的。

首先,葉奧爾德官方文檔:

的flush()

適用所有未決的電子表格的變化。電子表格操作有時會捆綁在一起以提高性能,例如對Range.getValue()進行多次調用時。但是,有時您可能希望確保所有掛起的更改都立即生效,例如將腳本正在執行的用戶數據顯示出來。

explainlikeimfive比喻怎麼樣:比方說,你正在用100個蘋果計算蘋果。

可能計數和單獨記錄每一個蘋果,就像這樣:

123456 ...等

這就好比內做一個flush()循環,因爲你在每個count操作之後都會寫字。你最終會寫100次,讓我們假設用你的手寫作需要更長的時間,而不是用你的眼睛來計算。

「優化」的過程(在這種情況下)是使用你的內存/緩存和寫數字向下數前5個蘋果,所以你會寫

5101520 ..等等

現在你最終會寫信給你的論文20次(減少80%),儘管必須計算相同數量的蘋果,但你已經減少了你必須寫的次數,所以你會看到通過減少運行時間獲得巨大的性能優勢。

這大致轉換爲Apps腳本操作的工作方式。與所有計算一樣,內存中操作最快執行,而讀/寫(又名輸入/輸出或I/O)操作最慢(請查詢您的Execution Transcript以作進一步證明)。這就是爲什麼當你特別需要在你的代碼執行過程的特定時刻將數據寫入電子表格時,你應該只使用flush()

希望這會有所幫助。