O Apps Script executa scripts vinculados ao Google Docs, Sheets ou Slides usando as credenciais de quem está interagindo com o documento naquele momento. Quando você tem várias contas Google estão logadas ao mesmo tempo, no mesmo perfil do seu navegador, o Google pode entregar a interface do script (por exemplo, uma janela de diálogo ou barra lateral) associada a uma sessão diferente daquela que efetivamente tem permissão para acessar os dados, daí você recebe o erro PERMISSION_DENIED.

Esse é um erro que só a Google pode resolver, não é uma falha no seu script ou planilha. Inclusive, há uma issue aberta desde 2020 que infelizmente não tem data de solução definida: issuetracker.google.com/issues/150247026
Se possível, acesse o link acima e comente um “+1”.
Como resolver o erro PERMISSION_DENIED?
Isolar a sessão do navegador
A principal e mais simples solução existente hoje, do lado do usuário, é evitar múltiplas contas logadas: faça logout das demais contas Google, use uma janela anônima ou configure um perfil separado do Chrome dedicado só à conta que precisa rodar o script ou usar determinada planilha.
Revogar e reconceder as permissões
Se o script foi autorizado em algum momento por uma identidade “errada” ou conflitante, vale limpar esse histórico:
- Acesse o link myaccount.google.com/linkedapps, busque o app atrelado ao projeto Apps Script que pretende usar e revogue a permissão dele.
- Rode o script novamente, o Google vai pedir a autorização do zero, já com a conta correta ativa.
Restringir o acesso com @OnlyCurrentDoc
Se a automação só precisa atuar sobre o documento atual (e não sobre toda a conta Google Drive do usuário), adicionar a anotação abaixo reduz bastante o escopo de permissão exigido:
/** @OnlyCurrentDoc */
function suaFuncao() {
// código que acessa a planilha/documento
}Um ponto importante: essa anotação vale por função, não por arquivo .gs. Então se existir qualquer função, em qualquer arquivo, acessando SpreadsheetApp, DocumentApp ou similar sem a anotação, o projeto inteiro volta a pedir o escopo amplo. Vale conferir a aba “Visão geral do projeto” no editor do Apps Script para verificar quais escopos estão realmente sendo solicitados depois de aplicar a mudança.
Leia também: Erro no Apps Script: Este app está bloqueado
Outros pontos a verificar
- Ambiente corporativo (Google Workspace): em alguns domínios, um administrador precisa liberar/whitelistar o complemento antes que os usuários consigam autorizá-lo.
- Erro persistente mesmo após todos os ajustes: pode indicar que a conta simplesmente não tem permissão para o serviço que o script está tentando acessar, vale confirmar isso separadamente do problema de múltiplas contas.
- Escopos sensíveis: complementos e web apps que pedem escopos sensíveis podem exigir passar pelo processo de verificação do Google antes de funcionar sem restrições para todos os usuários.
Resumindo…
O erro PERMISSION_DENIED em cenários com múltiplas contas logadas é, na prática, um problema de identidade e escopo, não de lógica do script. Na maioria dos casos que ajudei a solucionar, o problema estava em ter mais de uma conta logada. O simples fato de utilizar com apenas uma conta logada já resolvia.



