web-dev-qa-db-ja.com

Googleスプレッドシートのインポート機能の更新特性は何ですか?

インポートされたデータは、スプレッドシートをロードしたときに、常にソースページの最新のものではありません。これが発生すると、F5更新は役に立ちません。 Ctl-F5も同様です。どうやら何らかのキャッシュが行われているようです。

スプレッドシートを積極的に変更しているときなど、頻繁に更新しようとすると、URLフェッチが制限される可能性があると考えています。

ドキュメントリファレンス: http://docs.google.com/support/bin/answer.py?answer=75507

8
Chris Noe

このように Googleドキュメントフォーラムスレッドデータは約1時間ごとに更新する必要があります

そのスレッドでは、投稿者は、スクレイピングするURLにランダムなクエリ文字列を追加することを提案しています-

毎分更新されるパラメーターを追加するという簡単な回避策を使用しました。

関数呼び出し:= ImportHtml( "http://www.fifa.com/worldcup/standings/index.html?"&H81; "table"; 4)

H81の式は次のとおりです。= Minute(Now())

これは私のためのトリックを行います。

5
mvark

簡潔な答え

あなたは正しい、インポート関数は特定の間隔で結果を更新します。

説明

スプレッドシートのロケール、タイムゾーン、再計算、言語の変更 、公式ドキュメントのヘルプ記事、

注:外部データ関数は、次の間隔で再計算されます。

  • インポート範囲:30分
  • ImportHtml、ImportFeed、ImportData、ImportXml:1時間
  • GoogleFinance:2分

数式が引数の変更時に再計算されるため、これを使用してインポートされたデータを強制的に更新することができます。

Workaround

インポート関数を使用して式の再計算を強制する1つの方法は、URLに確定的だが無害なパラメーターを連結することです。

次の例では、「#rev = "&A2が元のURLに追加されます

A1:https://en.wikipedia.org/wiki/List_of_gravitationally_rounded_objects_of_the_Solar_System
A2:1
A3:4
A4:=IMPORTHTML(A1&"#rev="&A2,"table",A3)

値またはA1、A2、またはA3のいずれかが変更されるたびに、数式が再計算されます。 A2の値を変更して、A1のURLからテーブル4の更新を「強制」することができます。

インポート機能のカスタム時間更新間隔

インポート関数のカスタム更新間隔を設定するには、時間駆動のトリガースクリプトを使用して、確定的だが無害なURLパラメーターを更新します。

/**
 *
 * Updates at the interval set in the time driven trigger configuration
 * a cell value to be used as a deterministic bu unnicouus URL parameter 
 *
 */
function forceRefresh() {
  //Cell addrees of the deterministic but unnicouos URL parameter
  var reference = 'Sheet1!A2';   
  var rng = SpreadsheetApp.getActiveSpreadsheet().getRange(reference);
  rng.setValue(rng.getValue()+1);
}

参照資料

2
Rubén

リンクの変更に依存しない別の選択肢:

= if(Minute(Now())= Minute(Now())、ImportHtml( " http://www.fifa.com/worldcup/standings/index.html ?"; "table" ; 4)、 "")

Minute(Now())=Minute(Now())は常にtrueであるため、ifは常にImportHtmlを返します

0
VDizzle