Quais são as características de atualização das funções de importação de planilha do Google?

8

Os dados importados nem sempre estão atualizados com as páginas de origem quando carrego a planilha. Quando isso acontece, a atualização F5 não ajuda. Nem Ctl-F5. Aparentemente, há algum tipo de cache em andamento.

Estou pensando que eles podem estar limitando as buscas de URL quando tento atualizar com muita frequência - como quando estou modificando ativamente minha planilha.

Referência do documento: http://docs.google.com/support/bin/answer.py?answer=75507

Chris Noe
fonte
11
Você tentou o hack Chris?
Jacob Jan Tuinstra

Respostas:

5

De acordo com este tópico do fórum do Google Docs , os dados devem ser atualizados a cada hora

Nesse segmento, um pôster sugere anexar uma string de consulta aleatória ao URL do qual você deseja copiar -

Eu usei uma solução simples de anexar um parâmetro que é atualizado a cada minuto.

A chamada de função é: = ImportHtml ("http://www.fifa.com/worldcup/standings/index.html?" & H81; "table"; 4)

A fórmula em H81 é: = Minuto (Agora ())

Isso faz o truque para mim.

mvark
fonte
2
Realmente bom :)
Lipis
11
Interessante, eles dizem de hora em hora. Parece que recebo dados instantâneos com cada carregamento de página. Isso é até empalidecer. Talvez o atraso de 1 hora comece. Mas qual é a rima ou o motivo do bloqueio? Vou tentar o seu hack quando isso acontecer. Obrigado.
precisa saber é o seguinte
11
No momento, a fórmula proposta retorna "Erro: esta função não tem permissão para referenciar uma célula com NOW (), RAND () ou RANDBETWEEN ()"
Rubén
4

Resposta curta

Você está certo, as funções de importação atualizam seus resultados em determinados intervalos.

Explicação

De Alterar o código de idioma, fuso horário, recálculo e idioma de uma planilha , um artigo de ajuda da documentação oficial,

Nota: As funções externas de dados são recalculadas nos seguintes intervalos:

  • ImportRange: 30 minutos
  • ImportHtml, ImportFeed, ImportData, ImportXml: 1 hora
  • GoogleFinance: 2 minutos

Vale dizer que as fórmulas são recalculadas quando seus argumentos são alterados; portanto, podemos usá-lo para forçar uma atualização dos dados importados.

Gambiarra

Uma maneira de forçar o recálculo de fórmulas com funções de importação é concatenar para a URL um parâmetro determinístico, mas inócuo.

Exemplo

No exemplo a seguir, "#rev =" & A2 são adicionados ao 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)

Sempre que qualquer um dos valores ou A1, A2 ou A3 for alterado, a fórmula será recalculada. Poderíamos alterar o valor de A2 para "forçar" uma atualização da tabela 4 a partir do URL em A1.

Intervalo de atualização de tempo personalizado para funções de importação

Para ter um intervalo de atualização personalizado para funções de importação, use um script de acionamento controlado por tempo para atualizar o parâmetro de URL determinístico, mas inócuo.

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

Referências

Rubén
fonte
0

Outra alternativa que não depende de modificação de link:

= if (Minuto (Agora ()) = Minuto (Agora ()), ImportHtml (" http://www.fifa.com/worldcup/standings/index.html ?"; "tabela"; 4), "")

Desde a Minute(Now())=Minute(Now()) sempre é verdade, o if sempre retornará o ImportHtml

VDizzle
fonte
Como você sabe que os dados recuperados são a última versão em vez de uma versão em cache?
Rubén
-1

Clique em Arquivo> Configuração da planilha ... e verifique se as duas planilhas estão no mesmo local e, se as respostas vierem do Jotforms, defina o mesmo local também.

Elsie Cooper
fonte
-2

Forçar o recálculo da importrange, restabelecendo a fórmula da célula

Requeridos:

Dados Importados - Seu destino para onde tudo será copiado.

Configuração de dados importados - possui os seguintes campos:

+ --------------------------------------------- + --- ----------------------------- +
| A B
+ --------------------------------------------- + --- ----------------------------- +
| Importar dados da planilha com a chave: | chave
| Importar dados da planilha entre o intervalo: | A: AA
| Dados importados, selecione colunas: | SELECIONE * |
| Critérios de dados importados: | ONDE Col2 contém 'XYZ' |
| Os dados importados devem ser ordenados por coluna: | PEDIDO DE Col2 |
+ --------------------------------------------- + --- ----------------------------- +

Roteiro:

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

Isso permite alterar sua fórmula sem editar o script e facilitar a transferência do script em várias planilhas.

OBSERVAÇÃO: isso não é mais necessário nas novas planilhas do Google lançadas em maio de 2014.

user58180
fonte
3
Obrigado por publicar. Você parece estar adicionando a algumas perguntas aqui no SE. Isso realmente ajuda o OP?
precisa saber é o seguinte
-3

O minuto agora funciona muito bem (e você pode incluí-lo apenas na fórmula em vez de fazer referência a uma célula).

No entanto, com alguns URLs, ele não funciona e parece alterar o próprio link e pode fazer referência a outra planilha.

Não vou ser específico, mas um link que termina, por exemplo, em:

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

vai atrapalhar o próprio link. Não é uma solução completa, mas ainda funciona para provavelmente 90% dos links que as pessoas usam.

Eric Moz
fonte
2
No momento, o Planilhas Google não permite o uso de funções não determinísticas nas funções de importação.
Rubén