¿Cuáles son las características de actualización de las funciones de importación de hojas de cálculo de Google?

8

Los datos importados no siempre están actualizados con las páginas de origen cuando cargo la hoja de cálculo. Cuando esto sucede, la actualización F5 no ayuda. Tampoco Ctl-F5. Aparentemente hay algún tipo de almacenamiento en caché.

Estoy pensando que pueden estar limitando las recuperaciones de URL cuando trato de actualizar con demasiada frecuencia, como cuando estoy modificando activamente mi hoja de cálculo.

Referencia del documento: http://docs.google.com/support/bin/answer.py?answer=75507

Chris Noe
fuente
1
¿Intentaste hackear a Chris?
Jacob Jan Tuinstra

Respuestas:

5

Según este hilo del foro de Google Docs , los datos deberían actualizarse aproximadamente cada hora

En ese hilo, un póster sugiere agregar una cadena de consulta aleatoria a la URL desde la que desea extraer:

Utilicé una solución simple de agregar un parámetro que se actualiza cada minuto.

La llamada de función es: = ImportHtml ("http://www.fifa.com/worldcup/standings/index.html?" & H81; "table"; 4)

La fórmula en H81 es: = Minuto (Ahora ())

Esto hace el truco para mí.

mvark
fuente
2
Muy bueno :)
Lipis
1
Interesante dicen cada hora. Parece que obtengo datos instantáneos con cada carga de página. Eso es hasta que se resista. Tal vez la demora de 1 hora entra en acción. Pero, ¿cuál es la rima o la razón del bloqueo? Probaré tu truco cuando eso suceda. Gracias.
Chris Noe
1
En este momento, la fórmula propuesta devuelve "Error: esta función no puede hacer referencia a una celda con NOW (), RAND () o RANDBETWEEN ()"
Rubén
4

Respuesta corta

Tiene razón, las funciones de importación actualizan sus resultados a ciertos intervalos.

Explicación

Desde Cambiar la configuración regional, la zona horaria, el recálculo y el idioma de una hoja de cálculo , un artículo de ayuda de la documentación oficial,

Nota: Las funciones de datos externos se recalculan en los siguientes intervalos:

  • Rango de importación: 30 minutos
  • ImportHtml, ImportFeed, ImportData, ImportXml: 1 hora
  • GoogleFinance: 2 minutos

Vale la pena decir que las fórmulas se recalculan cuando cambian sus argumentos, por lo que podríamos usar esto para forzar una actualización de los datos importados.

Solución alterna

Una forma de forzar el recálculo de fórmulas con funciones de importación es concatenar a la URL un parámetro determinista pero inocuo.

Ejemplo

En el siguiente ejemplo, "#rev =" & A2 se agrega a la URL original

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)

Cada vez que cambie alguno de los valores o A1, A2 o A3, se volverá a calcular la fórmula. Podríamos cambiar el valor de A2 para "forzar" una actualización de la tabla 4 desde la URL en A1.

Intervalo de actualización de tiempo personalizado para funciones de importación

Para tener un intervalo de actualización personalizado para las funciones de importación, use una secuencia de comandos activada por tiempo para actualizar el parámetro de URL determinista pero inocuo.

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

Referencias

Rubén
fuente
0

Otra alternativa que no se basa en la modificación del enlace:

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

Como Minute(Now())=Minute(Now())siempre es cierto, el if siempre devolverá ImportHtml

VDizzle
fuente
¿Cómo sabe que los datos recuperados son la última versión en lugar de una versión en caché?
Rubén
-1

Haga clic en Archivo> Configuración de hoja de cálculo ... y verifique que ambas hojas estén en la misma configuración regional y si las respuestas provienen de Jotforms, configure la misma configuración regional allí también.

Elsie Cooper
fuente
-2

Forzar el recálculo del rango de importación restableciendo la fórmula de la celda

Necesario:

Datos importados: su destino donde se copiará todo.

Configuración de datos importados: tiene los siguientes campos:

+ --------------------------------------------- + --- ----------------------------- +
El | A | B |
+ --------------------------------------------- + --- ----------------------------- +
El | Importar datos de la hoja de cálculo con la clave: | clave |
El | Importar datos de hoja de cálculo entre rango: | A: AA |
El | Datos importados seleccionar columnas: | SELECCIONAR * |
El | Criterios de datos importados: | DONDE Col2 contiene 'XYZ' |
El | Los datos importados deben ordenarse por columna: | ORDEN POR Col2 |
+ --------------------------------------------- + --- ----------------------------- +

Guión:

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

Esto le permite cambiar su fórmula sin editar el guión y facilitar la transferencia del guión a través de varias hojas.

NOTA: Esto ya no es obligatorio en las Nuevas Hojas de cálculo de Google lanzadas en mayo de 2014.

usuario58180
fuente
3
Gracias por publicar. Parece que lo está agregando a bastantes preguntas aquí en SE. ¿Realmente ayuda al OP?
Jacob Jan Tuinstra
-3

El minuto ahora funciona muy bien (y puede incluir eso dentro de la fórmula en lugar de hacer referencia a una celda).

Sin embargo, con algunas URL no funciona y parece cambiar el enlace en sí mismo y puede hacer referencia a otra hoja.

No voy a ser específico, pero un enlace que termina por ejemplo en:

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

estropeará el enlace en sí. No es una solución de prueba completa, pero aún funciona para probablemente el 90% de los enlaces que usan las personas.

Eric Moz
fuente
2
En este momento, Google Sheets no permite el uso de funciones no deterministas en las funciones de importación.
Rubén