Execute ImportData apenas quando o Planilhas Google estiver aberto
Tenho várias planilhas do Google que usam muito ImportData para chamar um serviço REST.
Fiquei inicialmente com a impressão de que ImportData só chamaria o serviço REST quando a planilha estivesse aberta e em uso por uma pessoa.
Acontece que não é o caso, vejo muitas chamadas indo para o serviço REST, mesmo quando as planilhas não estão abertas.
O que pode estar piorando as coisas é o fato de que várias dessas planilhas também foram acidentalmente disponibilizadas off-line no aplicativo Planilhas Google para Android (por padrão, o aplicativo tornará as planilhas usadas recentemente disponíveis off-line). Tenho a sensação de que pode ter piorado as coisas.
Então, minhas perguntas:
- Existe em algum lugar uma explicação de como as atualizações ImportData funcionam?
- É possível controlar este mecanismo de atualização?
- A funcionalidade "offline" do aplicativo Android interfere neste mecanismo?
Idealmente, eu gostaria de:
- Coloque um botão "atualizar agora" na folha.
- Clique no botão para atualizar todos os campos importdata.
- Enquanto o botão não for pressionado, os campos continuarão exibindo os dados antigos (mesmo quando a planilha for reaberta).
- Opcionalmente, isso também deve se comportar bem no aplicativo Android, embora isso não seja um "deve ter".
Observe que isso está relacionado a esta questão , mas ao contrário. Não quero atualizações ImportData quando a planilha não está aberta no navegador de alguém.
Respostas
Você pode usar o Google Apps Script para
Crie um menu com um item que executa um script para importar seus dados
O script não será executado no Android
PS Também existe a possibilidade de Triggers, nomear uma função em GAS 'onOpen' que realmente só executa a função quando aberta.
O código para importar dados deve ter 2 ou 3 linhas, se você não está familiarizado com o GAS, dê uma olhada aqui:
https://developers.google.com/apps-script/reference/spreadsheet/range#getValues() https://developers.google.com/apps-script/reference/spreadsheet/range#setValues()