Quali sono le caratteristiche di aggiornamento delle funzioni di importazione del foglio di calcolo di Google?


8

I dati importati non sono sempre aggiornati con le pagine di origine quando carico il foglio di calcolo. Quando ciò accade, l'aggiornamento F5 non aiuta. Né Ctl-F5. Apparentemente c'è una specie di cache in corso.

Sto pensando che potrebbero limitare il recupero degli URL quando provo ad aggiornare troppo spesso, come quando sto modificando attivamente il mio foglio di calcolo.

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


1
Hai provato l'hack Chris?
Jacob Jan Tuinstra,

Risposte:


5

Come da questa discussione del forum di Google Documenti , i dati dovrebbero essere aggiornati ogni ora

In quella discussione, un poster suggerisce di aggiungere una stringa di querys casuale all'URL da cui desideri grattare -

Ho usato una semplice soluzione per aggiungere un parametro che si aggiorna ogni minuto.

La chiamata di funzione è: = ImportHtml ("http://www.fifa.com/worldcup/standings/index.html?" & H81; "table"; 4)

La formula in H81 è: = Minuto (Ora ())

Questo fa il trucco per me.


2
Davvero buono :)
Lipis,

1
Interessante, dicono ogni ora. Mi sembra di ottenere dati istantanei ad ogni caricamento della pagina. Questo fino a quando non si oppone. Forse interviene il ritardo di 1 ora. Ma qual è la rima o la ragione del blocco. Proverò il tuo hack quando ciò accade. Grazie.
Chris Noe,

1
Al momento, la formula proposta restituisce "Errore: questa funzione non può fare riferimento a una cella con NOW (), RAND () o RANDBETWEEN ()"
Rubén

4

Risposta breve

Hai ragione, le funzioni di importazione aggiornano il loro risultato a determinati intervalli.

Spiegazione

Da Modifica le impostazioni internazionali, il fuso orario, il ricalcolo e la lingua di un foglio di calcolo , un articolo della guida dalla documentazione ufficiale,

Nota: le funzioni di dati esterni vengono ricalcolate ai seguenti intervalli:

  • ImportRange: 30 minuti
  • ImportHtml, ImportFeed, ImportData, ImportXml: 1 ora
  • GoogleFinance: 2 minuti

Vale la pena dire che le formule vengono ricalcolate quando cambiano i loro argomenti, quindi potremmo usarlo per forzare un aggiornamento dei dati importati.

Soluzione

Un modo per forzare il ricalcolo delle formule con funzioni di importazione è concatenare all'URL un parametro deterministico ma innocuo.

Esempio

Nel seguente esempio, "#rev =" e A2 vengono aggiunti all'URL originale

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)

Ogni volta che uno qualsiasi dei valori o A1, A2 o A3 cambia, la formula verrà ricalcolata. Potremmo modificare il valore di A2 per "forzare" un aggiornamento della tabella 4 dall'URL in A1.

Intervallo di aggiornamento dell'ora personalizzato per le funzioni di importazione

Per disporre di un intervallo di aggiornamento personalizzato per le funzioni di importazione, utilizzare uno script di trigger temporizzato per aggiornare il parametro URL deterministico ma innocuo.

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

Riferimenti


0

Un'altra alternativa che non si basa sulla modifica del collegamento:

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

Poiché Minute(Now())=Minute(Now())è sempre vero, if restituirà sempre ImportHtml


Come fai a sapere che i dati recuperati sono l'ultima versione anziché una versione cache?
Rubén,

-1

Fai clic su File> Impostazioni foglio di calcolo ... e controlla che entrambi i fogli siano nella stessa Locale e se le risposte provengono da Jotforms, imposta anche la stessa Locale lì.


-2

Forza il ricalcolo di importrange ripristinando la formula cellulare

Necessario:

Dati importati: la destinazione in cui tutto verrà copiato.

Configurazione dati importati - Ha i seguenti campi:

+ --------------------------------------------- + --- ----------------------------- +
| A | B |
+ --------------------------------------------- + --- ----------------------------- +
| Importa dati da foglio di calcolo con il tasto: | chiave |
| Importa dati da foglio di calcolo tra intervallo: | A: AA |
| Colonne di selezione dei dati importati: | SELEZIONA * |
| Criteri di dati importati: | DOVE Col2 contiene 'XYZ' |
| I dati importati devono essere ordinati per colonna: | ORDINA PER Col2 |
+ --------------------------------------------- + --- ----------------------------- +

script:

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

Ciò consente di modificare la formula senza modificare lo script e di semplificare il trasferimento dello script su vari fogli.

NOTA: questo non è più necessario nei nuovi Fogli Google rilasciati a maggio 2014.


3
Grazie per la pubblicazione. Sembra che tu lo stia aggiungendo a qualche domanda qui su SE. Aiuta effettivamente l'OP?
Jacob Jan Tuinstra,

-3

Il minuto ora funziona molto bene (e puoi semplicemente includerlo nella formula anziché fare riferimento a una cella).

Tuttavia, con alcuni URL non funziona e sembra modificare il collegamento stesso e potrebbe fare riferimento a un altro foglio.

Non sarò specifico, ma un link che termina ad esempio in:

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

rovinerà il collegamento stesso. Non è una soluzione a prova completa, ma funziona ancora probabilmente per il 90% dei collegamenti che le persone usano.


2
Al momento, Fogli Google non consente l'uso di funzioni non deterministiche sulle funzioni di importazione.
Rubén,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.