1

私は Google ドキュメントを使い始めたばかりですが、本当に感謝しています。単純なタスクを実行するスクリプトは非常に簡単ですが、速度の問題が発生する可能性があり、少しイライラすることに気付きました。

現場での特定の材料のコストを計算するためにビジネスで使用するシートを持っています。それはうまく機能しますが、ジョブ間でクリアするのは少し面倒だったので、空にする必要がある範囲 (私が定義し、名前で参照) をクリアする簡単なスクリプトを書きました。

繰り返しますが、うまくいきました。唯一の問題は、いくつかの範囲 (7 つ) をクリアするのに約 10 秒かかることです。これは、各範囲がクリアされた後にスプレッドシートが保存されているためであり、時間がかかるためだと思います。

私がやりたいのは、スクリプトで自動保存を無効にしてこの理論をテストし、範囲がクリアされた後に再度有効にすることです。APIでそれを行う関数を見たことがないので、これが可能かどうかはわかりませんが、可能であれば知りたいです.


編集:これは私がそのまま使用している機能です。より簡潔にし、API 呼び出しの集中を少なくするために、何度か書き直そうとしましたが、これまでのところ、呼び出しの処理にかかる時間を短縮することはできませんでした。

function clearSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  sheet.getRange("client").clear();
  sheet.getRange("lm_group_1").clear({contentsOnly:true});
  sheet.getRange("lm_group_2").clear({contentsOnly:true});
  sheet.getRange("dr_group_1").clear({contentsOnly:true});
  sheet.getRange("dr_group_2").clear({contentsOnly:true});
  sheet.getRange("fr_group_1").clear({contentsOnly:true});
  sheet.getRange("fr_group_2").clear({contentsOnly:true});
  sheet.getRange("gr_group_1").clear({contentsOnly:true});
  sheet.getRange("client_name").activate();
}
4

1 に答える 1

1

それは不可能であり、おそらく決して不可能です。それは Google ドキュメントの「性質」ではありません。

ただし、スクリプトの書き方によっては、最終的にすべての変更が一度に書き込まれている可能性があります。スプレッドシートへの書き込みのフラッシュを強制する可能性のある API 呼び出しがいくつかあります (何かを書いた後に読み取ろうとするなど) が、それを確認するにはコードを確認する必要があります。

とにかく、いつでもスプレッドシートの改訂履歴をチェックして、一度に行われたのか複数のステップで行われたのかを確認できます.

setValuesパフォーマンスについては、Apps Script には避けられない自然な遅延がありますが、それは 10 秒ではないため、使用する API 呼び出しを減らし、複数回のバッチ呼び出しを優先するなど、スクリプトを改善する余地はおそらくありますsetValue。しかし、繰り返しになりますが、それをアサートし、より役立つヒントを提供するには、コードを確認する必要があります。

于 2012-06-08T01:34:33.570 に答える