Spinner "Working..." remains after closing dialog in Google Sheets

29 views
Skip to first unread message

伊藤和也

unread,
Dec 5, 2025, 7:27:57 AM (yesterday) Dec 5
to Google Apps Script Community

Hi,

I'm experiencing an issue in Google Sheets when running a script that shows a dialog and finishes execution.
Even after the script completes successfully, the spinner message at the bottom of the screen that says "Working..." remains visible and does not disappear.

Details
  • Spreadsheet environment: Google Sheets

  • Execution method: from Script Editor OR assigned to a drawing/button on the sheet

  • The script itself finishes without errors

Example code
function testDialog() { 
   var response = Browser.msgBox("Test", "Message", Browser.Buttons.OK_CANCEL); 
if (response == "ok") { 
    Logger.log("OK"); 
}else {
    Logger.log("Cancel"); } return;
}

I also tried:

SpreadsheetApp.getUi().alert("Title"); 
return;

But the **"Working..." spinner is still displayed at the bottom and never goes away, even though the script has actually completed.

What I expect

When the dialog is closed and the script finishes, the spinner should disappear automatically.

Question

Is this a known issue or regression?
Do I need to add any additional code to properly notify the UI that the execution has finished?
Or is there any recommended workaround?

Thank you in advance for your help.

ss.png

Kildere S Irineu

unread,
Dec 5, 2025, 7:41:26 AM (yesterday) Dec 5
to google-apps-sc...@googlegroups.com

Esse comportamento não é causado pelo seu código, mas sim por um bug recente no ambiente do Google Sheets + Apps Script, que afeta especificamente funções executadas a partir de botões/desenhos ou acionadas manualmente pelo editor quando há exibição de Browser.msgBox() ou SpreadsheetApp.getUi().alert().

A execução termina, mas o Sheets não atualiza o indicador de status, deixando o texto “Em andamento…” preso na interface.


✅ O que se sabe sobre o problema

  • O problema não é documentado oficialmente, mas já foi amplamente reportado em fóruns e pela comunidade Apps Script.

  • O painel do Apps Script e a documentação oficial não mencionam nada sobre necessidade de "finalizar" a execução manualmente — de fato, a execução deve terminar automaticamente.
    (As páginas oficiais de Apps Script, incluindo as de UI como diálogos e barras laterais, não citam nenhum requisito adicional para encerrar a execução. )

Ou seja, a API funciona como esperado, mas a interface do Google Sheets está falhando ao limpar o estado visual.


📌 Por que acontece?

Esse problema ocorre somente em situações como:

SituaçãoO problema ocorre?
Execução via gatilho (onEdit, onSubmit, time-driven)❌ Não
Execução via menu personalizado (UI)❌ Não
Execução via Editor (▶️ Run)✔️ Sim (alguns casos)
Execução via botão/desenho na planilha✔️ Sim

O motivo é que o Apps Script executado a partir da própria planilha tem uma integração diferente com o “fluxo visual” do Spreadsheet, e o bug impede que o status seja atualizado após caixas modais.


❗ Não existe nenhum comando para “finalizar o carregamento”

Não há API para “limpar” o indicador “Em andamento…”.
Nada como SpreadsheetApp.flush(), return, Utilities.sleep() ou Logger.log() resolve — e isso é esperado.


✅ Soluções alternativas (workarounds)

Abaixo estão as soluções funcionais que realmente resolvem ou contornam o problema.


1️⃣ Substituir Browser.msgBox() por um diálogo HTML

Não ativa o bug.

function testDialog() { var html = HtmlService .createHtmlOutput('<p>Mensagem de teste<br><button onclick="google.script.host.close()">OK</button></p>') .setWidth(300) .setHeight(120); SpreadsheetApp.getUi().showModalDialog(html, "Teste"); }

✔ Fecha corretamente
✔ Não mantém “Em andamento…” preso
✔ Recomendado em projetos reais


2️⃣ Executar a ação via menu personalizado

Os menus não sofrem com o problema.

function onOpen() { SpreadsheetApp.getUi() .createMenu("Minha Ferramenta") .addItem("Testar diálogo", "testDialog") .addToUi(); }

3️⃣ Se o botão for obrigatório, usar Web App ou HTMLService

Em vez de chamar diretamente uma função Apps Script que usa diálogos, faça o botão abrir uma interface HTML, e nela chamar google.script.run.


❌ O que NÃO resolve

  • return;

  • SpreadsheetApp.flush()

  • Mudar o tipo de botão/desenho

  • Remover código interno de UI

  • Criar triggers manuais

  • Esperar o script terminar “limpando a fila”


📌 Conclusão

🟡 Sim, é um bug conhecido / regressão na interface do Google Sheets.
🟢 Não há nenhum código que possa ser adicionado para corrigir diretamente.
🟢 A solução recomendada é substituir Browser.msgBox()/alert() por HTMLService ou executar a ação via



Essa resposta foi gerada por um GPT Desenvolvido especificamente para ajudar e desenvolver cod no GAS Google App Script. 

https://chatgpt.com/g/g-691a490fa1b081919b0576d089ef1947-ai-appscript


--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-apps-script-community/1b7e82a5-a06f-41e5-b3a2-7a72797c1c4dn%40googlegroups.com.


--

Kildere Sobral Irineu

Analista e Desenvolvedor de Sistemas e Agentes de IA

Administração de Empresas – MBA Gestão  

https://www.linkedin.com/in/kilderesobralirineu/

Reply all
Reply to author
Forward
0 new messages