web-dev-qa-db-ja.com

SpreadsheetApp.flush();を使用するのはなぜですか?

私は完全な初心者です。

解決策については、Googleドキュメントを読みました。私は同じものをインターネットで検索しました。 StackOverflowでも同じものを検索しました。

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

私が理解しているのは、.Flushは、関数を1つにまとめることなく、関数が発生したときに実行するのに役立ちます。

私は正しいですか?そうでない場合、素人用語での意味は何ですか?そして、簡単な例でお願いします。ありがとう。

9
Sowmay Jain

プログラマーは、続行する前に前のコードの出力や効果がスプレッドシートに書き込まれていることを確認したいときに、flush()を使用します。 flush()を実行しない場合、組み込みのキャッシュと操作のバンドルを使用して、コードが自動的に「最適化」される可能性があります。一般に、具体的に[〜#〜] do [〜#〜]必要になるまでflush()を使用する必要はありません...それが理にかなっている場合。

まず、あなたがたの古い公式文書:

流す()

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

explainlikeimfive アナロジーはどうですか:100個のリンゴがある木の上のリンゴを数えているとしましょう。

あなたできたそれぞれを数えて記録するApple次のように:

_1_、_2_、_3_、_4_、_5_、_6_...など。

これは、ループ内でflush()を実行するのと似ています。これは、各count操作の後に文字通り書き込みを行うためです。あなたはあなたの紙に書くことになります100回、そしてあなたの目で数えるよりもあなたの手で書くのに時間がかかると仮定しましょう。

「最適化された」プロセス(この場合)は、メモリ/キャッシュを使用し、数を書き留める前に5つのリンゴを数えることです。したがって、次のように記述します。

_5_、_10_、_15_、_20_...など。

今、あなたはあなたの論文に書くことになります20回(80%削減)、そして同じ数のリンゴを数えなければならないにもかかわらず、あなたは実行する必要のある書き込みの数が減ったため、実行時間が短縮されることでパフォーマンスが大幅に向上します。

これは、AppsScriptの操作の仕組みに大まかに変換されます。すべてのコンピューティングと同様に、メモリ内操作は実行が最も速く、読み取り/書き込み(入力/出力、またはI/O)操作は最も遅くなります(詳細については、 実行トランスクリプト を確認してください)。証明)。そのため、コードの実行の特定の時点でスプレッドシートにデータを書き込む必要がある場合にのみ、flush()を使用する必要があります。

お役に立てれば。

12
Stevie Howard