1. ホーム
  2. javascript

[解決済み] なぜSpreadsheetApp.flush();を使うのでしょうか?

2022-02-24 12:28:08

質問

全くの初心者なんですが、どうしたらいいですか?

Googleドキュメントを読んで解決しました。 インターネットで検索してみました。 StackOverflowも検索してみました。

でも。すべてが技術的なようです。

私が理解しているのは、.Flushは関数を1つにまとめず、その都度実行するのに役立つということです。

私は正しいですか?そうでない場合、素人目にはどのような意味でしょうか?また、簡単な例でお願いします。よろしくお願いします。

どのように解決するのですか?

プログラマは flush() 前のコードの出力や効果がスプレッドシートに書き込まれたことを確認してから続きを行いたい場合。 もし flush() その場合、組み込みのキャッシュと操作のバンドルによって、コードが自動的に最適化されることがあります。 一般的には flush() を指定するまでは DO 必要なんだ...意味がわかるかな?

まず、昔ながらの公式ドキュメント。

flush()

保留中のSpreadsheetの変更をすべて適用する。スプレッドシートの操作は、Range.getValue()を複数回呼び出す場合など、パフォーマンスを向上させるためにまとめて行われることがあります。しかし、例えばスクリプトの実行中にユーザーにデータを見せるために、保留中のすべての変更がすぐに行われるようにしたい場合があります。

を使うのはどうでしょうか? エクスプリケイションライクイムファイブ のアナロジーです。例えば、100個のリンゴがある木でリンゴを数えるとします。

あなたは かもしれない というように、1つ1つのリンゴを数えて記録します。

1 , 2 , 3 , 4 , 5 , 6 ... など

をするようなものです。 flush() の後に書いているので、文字通りループの中で count の操作になります。 結局、論文に書き込むことになります 100回 で、手で書くのは目で数えるより時間がかかるとします。

最適化された処理とは、メモリやバッファを使って、数字を書き込む前にリンゴを5個数えることです。

5 , 10 , 15 , 20 ... など

これで、論文への書き込みは終了です 20回 (80%削減)、同じ数のリンゴを数える必要があるにもかかわらず、書き込み回数が減ったので、実行時間の短縮という形で大幅な性能向上が見込めます。

これは、Apps Scriptの操作の仕組みとほぼ同じです。 すべてのコンピューティングと同様に、インメモリ操作は最も速く実行され、読み取り/書き込み(別名、入力/出力)操作は最も遅くなります(あなたの 実行記録 をご覧ください。) そのため flush() は、コードの実行中の特定の時点でスプレッドシートにデータを書き込む必要がある場合です。

お役に立てれば幸いです。