web-dev-qa-db-ja.com

IMPORTRANGE使用時の参照セルの更新の遅延

GoogleスプレッドシートのIMPORTRANGE関数を使用して、spreadsheet1のデータを参照し、spreadsheet2に表示しています。これは正常に機能しますが、spreadsheet1を編集してからspreadsheet2に移動すると、自動的に更新されず、ページを更新しても更新されません。キャッシュを0MBに制限するように設定したので、ローカルには何も保存されません。

マスタースプレッドシートをより頻繁にチェックバックし、それに応じて値を更新する方法はありますか?

4
sam

簡潔な答え

IMPORTRANGEを使用する代わりに、 Google Apps Script を使用します

説明

スプレッドシートのロケール、タイムゾーン、再計算、言語の変更 によると、IMPORTRANGEの再計算間隔は30分です。より短い再計算間隔が必要な場合は、何らかの方法で数式パラメーターを変更する必要があります。

残念ながら、新しいGoogleスプレッドシートでは、NOWRand、またはRANDBETWEEN関数を使用することはできないため、代わりにGoogle Appsスクリプトを使用します。

非決定的関数の使用に関する説明

Jacob Jan Tuinstraによる comment で提供されているスレッドでは、特定の間隔で更新される追加のURLパラメーターの使用に言及しています。そのスレッドは2011年のものです。

核となるアイデアは、URLに"&workaround="&NOW()のようなものを追加し、再計算設定をon change and every minuteに設定することでしたが、インポートタスクに1分以上かかる可能性があるため、NOW()ではなく、十分な間隔、たとえば10分とすると、代わりにNOW()を使用します

INT(NOW()/TIME(0;10;0))

この式にtime_intervalという名前を付けます。

IMPORTRANGEを含むセル数式は次のようになります

=IMPORTRANGE(
  "https://docs.google.com/spreadsheets/d/spredsheet_key&workaround="&time_interval,
  "Sheet1!A1:AB"
 )

残念ながら、上記の式は次のエラーを返します

エラー
この関数は、NOW()、Rand()、またはRANDBETWEEN()を使用してセルを参照することはできません

他のインポート関数でも同じことが起こります(IMPORTDATAIMPORTHTMLIMPORTFEEDIMPORTXML

参照資料

1
Rubén