Googleスプレッドシートが開いているときにのみImportDataを実行します

Aug 23 2020

ImportDataを多用してRESTサービスを呼び出すGoogleスプレッドシートがたくさんあります。

私は当初、シートが開いていて人が使用しているときにのみImportDataがRESTサービスを呼び出すという印象を受けました。

結局のところ、そうではありません。シートが開いていなくても、RESTサービスに多くの呼び出しが行われているのを見ることができます。

さらに悪いことに、これらのシートの多くが誤ってGoogle Sheets Androidアプリでオフラインで利用できるようになっているという事実があります(デフォルトでは、アプリは最近使用したシートをオフラインで利用できるようにします)。事態を悪化させたのではないかと感じています。

だから私の質問:

  • ImportDataの更新がどのように機能するかについての説明はどこかにありますか?
  • この更新メカニズムを制御することは可能ですか?
  • Androidアプリの「オフライン」機能はこのメカニズムに干渉しますか?

理想的には、次のことを行います。

  1. シートに「今すぐ更新」ボタンを配置します。
  2. ボタンをクリックして、すべてのimportdataフィールドを更新します。
  3. ボタンが押されていない限り、フィールドには古いデータが表示され続けます(シートを再度開いた場合でも)。
  4. オプションで、これはAndroidアプリでも正常に動作するはずですが、これは「必須」ではありません。

これはこの質問に関連していますが、その逆であることに注意してください。シートが誰かのブラウザで開かれていないときにImportDataを更新したくありません。

回答

2 Riël Aug 24 2020 at 13:49

Google AppsScriptを使用して

  1. データをインポートするスクリプトを実行するアイテムを使用してメニューを作成します

  2. スクリプトはAndroidでは実行されません

PSまた、トリガーの可能性があり、GAS'onOpen 'で関数に名前を付け、実際には開いているときにのみ関数を実行します。

データをインポートするコードは2行または3行である必要があります。GASに慣れていない場合は、次を参照してください。

https://developers.google.com/apps-script/reference/spreadsheet/range#getValues() https://developers.google.com/apps-script/reference/spreadsheet/range#setValues()