Was sind die Aktualisierungseigenschaften der Google Spreadsheet Import-Funktionen?


8

Die importierten Daten sind beim Laden der Tabelle nicht immer mit den Quellseiten auf dem neuesten Stand. In diesem Fall hilft die F5-Aktualisierung nicht. Ctl-F5 auch nicht. Anscheinend gibt es eine Art Caching.

Ich denke, dass sie möglicherweise die URL-Abrufe einschränken, wenn ich versuche, zu oft zu aktualisieren - beispielsweise wenn ich meine Tabelle aktiv ändere.

Dokumentreferenz: http://docs.google.com/support/bin/answer.py?answer=75507


1
Hast du den Hack Chris ausprobiert?
Jacob Jan Tuinstra

Antworten:


5

Gemäß diesem Google Docs Forum-Thread sollten die Daten ungefähr jede Stunde aktualisiert werden

In diesem Thread schlägt ein Poster vor, einen zufälligen Querystring an die URL anzuhängen, von der Sie kratzen möchten -

Ich habe eine einfache Problemumgehung zum Anhängen eines Parameters verwendet, der jede Minute aktualisiert wird.

Funktionsaufruf ist: = ImportHtml ("http://www.fifa.com/worldcup/standings/index.html?" & H81; "table"; 4)

Die Formel in H81 lautet: = Minute (Now ())

Das macht den Trick für mich.


2
Wirklich gut :)
Lipis

1
Interessant sagen sie stündlich. Ich erhalte bei jedem Laden der Seite sofort Daten. Das ist, bis es scheut. Vielleicht setzt die Verzögerung von 1 Stunde ein. Aber was ist der Reim oder Grund für die Sperrung. Ich werde deinen Hack versuchen, wenn das passiert. Vielen Dank.
Chris Noe

1
Zu diesem Zeitpunkt gibt die vorgeschlagene Formel "Fehler: Diese Funktion darf nicht auf eine Zelle mit NOW (), RAND () oder RANDBETWEEN () verweisen"
Rubén

3

Kurze Antwort

Sie haben Recht, die Importfunktionen aktualisieren ihr Ergebnis in bestimmten Intervallen.

Erläuterung

Unter Ändern des Gebietsschemas, der Zeitzone, der Neuberechnung und der Sprache einer Tabelle finden Sie einen Hilfeartikel aus der offiziellen Dokumentation.

Hinweis: Externe Datenfunktionen werden in folgenden Intervallen neu berechnet:

  • ImportRange: 30 Minuten
  • ImportHtml, ImportFeed, ImportData, ImportXml: 1 Stunde
  • GoogleFinance: 2 Minuten

Es ist erwähnenswert, dass Formeln neu berechnet werden, wenn sich ihre Argumente ändern, sodass wir dies verwenden können, um eine Aktualisierung der importierten Daten zu erzwingen.

Problemumgehung

Eine Möglichkeit, die Neuberechnung von Formeln mit Importfunktionen zu erzwingen, besteht darin, einen deterministischen, aber harmlosen Parameter mit der URL zu verknüpfen.

Beispiel

Im folgenden Beispiel wird "#rev =" & A2 zur ursprünglichen URL hinzugefügt

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)

Jedes Mal, wenn sich einer der Werte oder A1, A2 oder A3 ändert, wird die Formel neu berechnet. Wir könnten den Wert von A2 ändern, um eine Aktualisierung der Tabelle 4 von der URL in A1 zu "erzwingen".

Benutzerdefiniertes Zeitaktualisierungsintervall für Importfunktionen

Verwenden Sie ein zeitgesteuertes Triggerskript, um den deterministischen, aber harmlosen URL-Parameter zu aktualisieren, um ein benutzerdefiniertes Aktualisierungsintervall für Importfunktionen zu erhalten.

/**
 *
 * 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);
}

Verweise


0

Eine weitere Alternative, die nicht auf Linkmodifikationen beruht:

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

Da dies Minute(Now())=Minute(Now())immer der Fall ist, gibt das if immer den ImportHtml zurück


Woher wissen Sie, dass die abgerufenen Daten die letzte Version anstelle einer zwischengespeicherten Version sind?
Rubén

-1

Klicken Sie auf Datei> Tabellenkalkulationseinstellung ... und überprüfen Sie, ob sich beide Blätter im selben Gebietsschema befinden. Wenn Antworten von Jotforms stammen, legen Sie dort auch dasselbe Gebietsschema fest.


-2

Erzwingen Sie eine Neuberechnung des Importbereichs, indem Sie die Zellformel wiederherstellen

Erforderlich:

Importierte Daten - Ihr Ziel, auf das alles kopiert wird.

Imported Data Config - Hat die folgenden Felder:

+ ----------------------------------------- + --- ----------------------------- +
| A | B |
+ ----------------------------------------- + --- ----------------------------- +
| Importieren Sie Daten aus der Tabelle mit dem Schlüssel: | Schlüssel |
| Importieren Sie Daten aus einer Tabelle zwischen folgenden Bereichen: | A: AA |
| Importierte Daten wählen Spalten aus: | SELECT * |
| Kriterien für importierte Daten: | WO Col2 'XYZ' | enthält
| Importierte Daten sollten nach Spalten sortiert sein: | BESTELLUNG NACH Col2 |
+ ----------------------------------------- + --- ----------------------------- +

Skript:

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!");
}

Auf diese Weise können Sie Ihre Formel ändern, ohne das Skript zu bearbeiten, und das Skript einfacher auf verschiedene Blätter übertragen.

HINWEIS: Dies ist in den im Mai 2014 veröffentlichten neuen Google Sheets nicht mehr erforderlich.


3
Danke fürs Schreiben. Sie scheinen es hier auf SE zu einigen Fragen hinzuzufügen. Hilft es tatsächlich dem OP?
Jacob Jan Tuinstra

-3

Die Minute funktioniert jetzt sehr gut (und Sie können dies einfach in die Formel aufnehmen, anstatt auf eine Zelle zu verweisen).

Bei einigen URLs funktioniert dies jedoch nicht und scheint den Link selbst zu ändern und möglicherweise auf ein anderes Blatt zu verweisen.

Ich werde nicht spezifisch sein, aber ein Link, der zum Beispiel endet in:

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

wird den Link selbst durcheinander bringen. Keine vollständige Proof-Lösung, aber immer noch für wahrscheinlich 90% der von Menschen verwendeten Links geeignet.


2
Derzeit erlaubt Google Sheets nicht die Verwendung nicht deterministischer Funktionen für Importfunktionen.
Rubén
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.