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


8

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

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

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


1
あなたはハッククリスを試しましたか?
Jacob Jan Tuinstra 2014年

回答:


5

このGoogleドキュメントフォーラムのスレッドよれば、データは約1時間ごとに更新されます

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

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

関数呼び出しは次のとおりです:= ImportHtml( "http://www.fifa.com/worldcup/standings/index.html?"&H81; "table"; 4)

H81の式は、= Minute(Now())です。

これは私にとってはトリックです。


2
本当に良いもの:)
Lipis

1
興味深いことに、彼らは毎時言っています。ページが読み込まれるたびに瞬時にデータが表示されるようです。それは、それが不快になるまでです。おそらく1時間の遅延が発生します。しかし、ロックダウンの韻や理由は何ですか。それが起こったら私はあなたのハックをしようとします。ありがとう。
Chris Noe

1
このとき、提案された式戻り、「エラー:この関数はNOW()、RAND()、またはRANDBETWEEN()でセルを参照することはできません」
ルベン

4

簡潔な答え

そうです、インポート関数は一定の間隔で結果を更新します。

説明

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

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

  • ImportRange:30分
  • ImportHtml、ImportFeed、ImportData、ImportXml:1時間
  • GoogleFinance:2分

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

回避策

インポート関数を使用して数式を強制的に再計算する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);
}

参考文献


0

リンクの変更に依存しない別の方法:

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

以来Minute(Now())=Minute(Now())、常に真である、常にIMPORTHTMLを返します場合


取得したデータがキャッシュされたバージョンではなく、最後のバージョンであることをどのようにして知っていますか?
ルベン・

-1

[ファイル]> [スプレッドシートの設定...]をクリックし、両方のシートが同じロケールにあることを確認します。応答がJotformsからのものである場合は、そこにも同じロケールを設定します。


-2

セルの数式を復元することにより、インポート範囲の再計算を強制します

必須:

インポートされたデータ-すべてがコピーされるターゲット。

インポートされたデータ構成-次のフィールドがあります。

+ --------------------------------------------- + --- ----------------------------- +
| A | B |
+ --------------------------------------------- + --- ----------------------------- +
| 次のキーを使用して、スプレッドシートからデータをインポートします。キー|
| スプレッドシートから範囲間でデータをインポート:| A:AA |
| インポートされたデータ選択列:| 選択* |
| インポートされたデータの基準:| 列2に「XYZ」が含まれている|
| インポートされたデータは列で並べ替える必要があります:| COL2による注文|
+ --------------------------------------------- + --- ----------------------------- +

脚本:

function onOpen() {
try {
var ss = SpreadsheetApp.getActiveSpreadsheet();
}
catch(err)
{
Browser.msgBox(err);
}

var configsheet = ss.getSheetByName("Imported Data Config");

var configkey = configsheet.getRange("B1").getValue();
var configrange = configsheet.getRange("B2").getValue();
var configselect = configsheet.getRange("B3").getValue();
var configwhere = configsheet.getRange("B4").getValue();
var configorderby = configsheet.getRange("B5").getValue();

var importedsheet = ss.getSheetByName("Imported Data");
importedsheet.getRange("A1").setValue('=QUERY(IMPORTRANGE("' + configkey + '","' + configrange + '"),"' + configselect + ' ' + configwhere + ' ' + configorderby + '")');

SpreadsheetApp.flush();

// Solution of sourcecode is: http://stackoverflow.com/questions/13631584/how-can-i-force-a-recalculation-of-cell-using-importrange-function-in-a-google-s
// OnOpen Trigger: https://developers.google.com/apps-script/understanding_triggers
// Active Spreadsheet solution: https://productforums.google.com/forum/#!topic/docs/XIY0WNX0uL8

Browser.msgBox("Sync Complete!");
}

これにより、スクリプトを編集せずに数式を変更でき、さまざまなシート間でスクリプトを転送しやすくなります。

注:これは、2014年5月にリリースされた新しいGoogleスプレッドシートでは必要ありません。


3
投稿いただきありがとうございます。ここSEでかなりの数の質問に追加しているようです。それは実際にOPを助けますか?
Jacob Jan Tuinstra、2014年

-3

分がうまく機能するようになりました(セルを参照するのではなく、数式に含めることもできます)。

ただし、一部のURLでは機能せず、リンク自体が変更されているように見え、別のシートを参照する場合があります。

私は具体的にするつもりはありませんが、たとえば次で終わるリンク:

.....ranking?ranking=xp_total&table=0"&Minute(Now()),"table",4)

リンク自体をめちゃくちゃにします。完全な証明ソリューションではありませんが、人々が使用するリンクのおそらく90%で機能します。


2
現在のところ、Googleスプレッドシートでは、インポート関数で非決定的関数を使用することはできません。
ルベン・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.