Estou usando um aplicativo externo para inserir dados em uma planilha do Google. Esta pasta de trabalho é referenciada por uma pasta de trabalho separada (com a IMPORTRANGE(spreadsheet_key, range_string)
função) que manipula e interpreta os dados. Meu problema é que sempre que eu modifico pessoalmente a pasta de trabalho referenciada, a pasta de trabalho de referência é atualizada, mas sempre que o aplicativo externo a modifica, ela não é atualizada.
Tentei editar as "Configurações da planilha" para que o recálculo seja feito a cada minuto e a cada alteração. Além disso, também instalei uma extensão no Google Chrome que atualiza automaticamente a página a cada hora. No entanto, os dados não são reimportados da pasta de trabalho referenciada. Mesmo se eu copiar a fórmula em uma nova célula, os dados ainda não serão reimportados.
Há algo que eu possa fazer na pasta de trabalho de referência para acionar o Planilhas Google para reimportar os dados?
Editar: Só para esclarecer, atualmente tenho uma pasta de trabalho com dados inseridos por um aplicativo externo (chame-a de "planilha de origem") e outra pasta de trabalho com uma IMPORTRANGE
função (chame-a de "planilha de referência"). Os dados mostrados pela IMPORTRANGE
função na "folha de referência" não incluem nenhum dado inserido pelo aplicativo externo desde a última vez que editei pessoalmente a "folha de origem". Além disso, as duas pastas de trabalho estão usando as novas planilhas do Google.
Editar: Além disso, esta pergunta não é a mesma de Como vincular uma célula nas planilhas do Google a uma célula em outro documento? porque estou usando a função fornecida como solução para essa pergunta para importar dados de uma planilha. O problema não é como importar os dados, mas como atualizar a fonte dos dados. Minha suposição seria que o Google cuidaria disso para mim, mas os dados na "planilha de referência" não são atualizados, e a única maneira que eu posso encontrar para atualizar é entrar fisicamente na "planilha de origem "e edite-o eu mesmo.
fonte
separate workbook
bem. De todas as aparências, parece que ele estava apenas digitada.Respostas:
Eu tenho lutado com o mesmo problema. Em vez de escrever uma função personalizada, eu adicionar uma string de consulta diferente para
spreadsheet_url
nosIMPORTRANGE
na esperança de que cada vez que a página é atualizada, o Google acha que ele precisa buscar dados de uma nova planilha. Simplesmente acrescento um novo carimbo de data / hora para tornar o URL único a cada vez. É um truque flagrante, mas tem funcionado para mim em várias folhas.Minha fórmula anteriormente parecia algo como:
E agora parece com:
Atualizar:
Esse método não funciona mais, já que o Google não permite mais
now()
entrarimportrange()
. Veja o comentário de Hugh abaixo.fonte
O seguinte é de Jimmy nesta resposta de aplicativos da Web .
=now()
equação em uma célula aleatória, digamosZ1
=importrange()
função que faça referência ànow
função da outra planilha.Tentei muitas outras sugestões, incluindo o uso da
=now()
função, o truque do URL agora neste segmento ou o Script do Apps para inserir texto aleatório em um intervalo definido, mas nada forçaria a atualização importante, exceto uma edição manual da planilha de origem.fonte
Eu achei a maneira mais fácil de colocar uma
if
declaração simples em torno doimportrange
.Isso funciona sempre.
fonte
=if (Now() > now()-1, IMPORTRANGE(B1,B2),)
A solução alternativa para o carimbo de data / hora não parece funcionar para mim - há uma observação explícita de que o uso de carimbos de data e funções de rand não é permitido.
Minha solução alternativa muito hacky é excluir a célula e pressionar ctrl + z. Força uma atualização sempre. É trivial escrever esse script em aberto, ou em intervalos de tempo específicos, para manter os dados atualizados.
fonte
Eu encontrei um hack simples para simular uma atualização manual da célula e iniciar modificações em uma planilha externa.
Criou uma função personalizada como esta:
Então, na minha planilha eu chamo assim:
onde
tab!B1
é uma das células que modifico por código.fonte
OU ... você pode criar um script simples, primeiro fornecendo o valor cero (0) e, em seguida, incluindo a fórmula de volta e faça o seguinte:
fonte
Consegui encontrar uma maneira de resolver meu problema (detalhado aqui ) usando um Script do Google Apps com uma função personalizada.
Se você substituir
=IMPORTRANGE(spreadsheet_url, range_string)
em sua planilha=DynamicImportRange(spreadsheet_url, sheet_name, range)
e colar o código abaixo em Ferramentas -> Editor de scripts -> Projeto em branco, ele deverá funcionar (consulte isso para obter mais informações sobre como escrever scripts de aplicativos).Se você deseja que a planilha seja atualizada regularmente, é possível configurar um gatilho indo para Recursos -> Gatilhos do projeto atual na janela Script de aplicativos.
fonte
SpreadsheetApp.openById()
ouSpreadsheetApp.openByUrl()
. Verifique aqui e aquiComo solução alternativa para o
now()
roadblock, você pode alterar as configurações da planilha para atualizar a cada hora.Arquivo -> Configurações da planilha -> Cálculo
Atualize a planilha para recalcular-se em " Na mudança e a cada hora " ou "Na mudança e a cada minuto". Embora tenha em mente, a seleção do recálculo a cada minuto pode interromper a planilha.
fonte
Você pode usar o Sheetgo complementar do Planilhas Google para atualizar automaticamente sua referência de outra planilha. Você pode usar 30 atualizações gratuitamente por mês ou obter uma assinatura paga para obter mais atualizações. Este vídeo deve explicar o uso básico.
fonte