Execute ImportData apenas quando o Planilhas Google estiver aberto

Aug 23 2020

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:

  1. Coloque um botão "atualizar agora" na folha.
  2. Clique no botão para atualizar todos os campos importdata.
  3. Enquanto o botão não for pressionado, os campos continuarão exibindo os dados antigos (mesmo quando a planilha for reaberta).
  4. 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

2 Riël Aug 24 2020 at 13:49

Você pode usar o Google Apps Script para

  1. Crie um menu com um item que executa um script para importar seus dados

  2. 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()