Solução de problemas

Até mesmo os desenvolvedores mais experientes raramente escrevem código corretamente na primeira tentativa, o que torna a solução de problemas uma parte importante do processo de desenvolvimento. Esta seção aborda técnicas para encontrar, entender e depurar erros nos seus scripts.

Mensagens de erro

Quando o script encontra um erro, uma mensagem aparece com um número de linha. Há dois tipos básicos de erros: erros de sintaxe e erros de execução.

Erros de sintaxe

Erros de sintaxe ocorrem quando o código não segue a gramática do JavaScript e são detectados quando você salva o script. Por exemplo, o snippet a seguir contém um erro de sintaxe:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

O problema é a falta de um caractere ) no final da linha 4. Quando você salva o script, o seguinte erro aparece:

Falta um ")" após a lista de argumentos. (linha 4)

Esses erros são encontrados imediatamente, o que facilita a solução de problemas. Somente códigos válidos são salvos no seu projeto.

Erros de execução

Os erros de execução ocorrem quando uma função ou classe é usada incorretamente e são detectados quando o script é executado. Por exemplo, o código a seguir causa um erro de tempo de execução:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

Embora o código esteja formatado corretamente, "john" é um endereço de e-mail inválido. O seguinte erro é gerado:

E-mail inválido: john (linha 5)

Esses erros são difíceis de resolver porque os dados geralmente são extraídos de fontes externas, como planilhas ou formulários. Use técnicas de depuração para identificar a causa.

Erros comuns

Confira a seguir uma lista de erros comuns e suas causas.

Serviço chamado muitas vezes: <nome da ação>

Esse erro indica que você excedeu sua cota diária para uma ação, como enviar muitos e-mails. As cotas variam de acordo com o tipo de conta e estão sujeitas a mudanças. Consulte os limites na documentação de cota do Apps Script.

Servidor indisponível ou Ocorreu um erro no servidor.Tente novamente.

As possíveis causas incluem:

  • Um servidor do Google está temporariamente indisponível. Aguarde e tente de novo.
  • Um erro no seu script não tem uma mensagem correspondente. Tente depurar para isolar o problema.
  • Há um bug no Google Apps Script. Pesquise e registre relatórios de bugs em Bugs.

É necessário ter autorização para executar esta ação.

O script não tem a autorização necessária para ser executado. Quando um script é executado por um gatilho ou como um serviço, não é possível apresentar uma caixa de diálogo de autorização.

Para autorizar o script, abra o editor de scripts e execute qualquer função. Se o script usar novos serviços não autorizados, você precisará autorizá-lo novamente.

Gatilhos disparados antes da autorização ou após o vencimento geralmente causam esse erro. Se um complemento causar isso, use-o novamente para autorizar. Remova os gatilhos problemáticos:

  1. No projeto do Apps Script, clique em Acionadores .
  2. Ao lado do gatilho, clique em Mais > Excluir gatilho.

Como alternativa, desinstale o complemento.

Permissões granulares também podem causar esses erros. Consulte a página escopos de autorização para proteger as execuções de gatilho.

Acesso negado: DriveApp ou A política do domínio desativou os apps de terceiros do Drive

Os administradores do Google Workspace podem desativar a API Drive para o domínio, o que impede que os usuários usem apps do Drive ou complementos do Apps Script que usam o serviço do Drive.

Se um complemento ou app da Web for publicado para instalação em todo o domínio e instalado por um administrador, o script vai funcionar mesmo que a API Drive esteja desativada.

O script não tem permissão para acessar a identidade do usuário ativo.

A identidade e o e-mail do usuário ativo não estão disponíveis. Isso resulta de chamadas para Session.getActiveUser() ou Session.getEffectiveUser() em modos de autorização diferentes de AuthMode.FULL. Se o script for executado em um gatilho, você poderá encontrar o modo de autorização na propriedade authMode do objeto de evento do Apps Script.

Resolva o problema com base no modo de autorização:

  • Em AuthMode.FULL, considere usar Session.getEffectiveUser() em vez disso.
  • Em AuthMode.LIMITED, verifique se o proprietário autorizou o script.
  • Em outros modos de autorização, evite chamar qualquer um dos métodos.
  • Se você é um cliente do Google Workspace que começou a receber esse aviso de um gatilho instalável, verifique se ele está sendo executado como um usuário na sua organização.

A biblioteca está ausente

Uma biblioteca pode ser marcada como ausente se muitas pessoas acessarem o conteúdo simultaneamente. Para solucioná-lo:

  • Copie o código da biblioteca diretamente no seu script.
  • Copie e implante a biblioteca da sua própria conta.
  • Se a biblioteca não for necessária para o funcionamento do script, remova-a do projeto.

Ocorreu um erro porque uma versão da biblioteca ou da implantação está ausente. Código do erro Not_Found

Essa mensagem de erro indica uma das seguintes situações:

  • A versão do script usada por uma implantação foi excluída. Para resolver isso, edite a implantação e selecione uma versão diferente do script.
  • Uma versão da biblioteca usada pelo script foi excluída. Para resolver isso, no editor de script, em "Bibliotecas", encontre a biblioteca e atualize para uma versão diferente ou remova a biblioteca. Para atualizar, clique no número da versão e selecione outra. Para remover, clique em Mais > Remover.
  • Uma biblioteca inclui outra, e a versão dessa biblioteca foi excluída. Para resolver isso, entre em contato com o autor da biblioteca ou use uma versão diferente dela que seu script use.

Erro 400: invalid_scope ao chamar a API Google Chat com o serviço avançado

Se você encontrar Error 400: invalid_scope com a mensagem de erro Some requested scopes cannot be shown, isso significa que você não especificou nenhum escopo de autorização no arquivo appsscript.json do projeto do Apps Script. Na maioria dos casos, o Apps Script determina automaticamente quais escopos um script precisa, mas, ao usar o serviço avançado do Chat, é necessário adicionar manualmente ao arquivo de manifesto do projeto do Apps Script os escopos de autorização que o script usa. Consulte Definir escopos explícitos.

Para resolver o erro, adicione os escopos de autorização adequados ao arquivo appsscript.json do projeto do Apps Script como parte da matriz oauthScopes. Por exemplo, para chamar o método spaces.messages.create, adicione o seguinte:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Chamadas de UrlFetch para <URL> não são permitidas pelo seu administrador

Os administradores do Google Workspace podem usar uma lista de permissões para controlar o acesso a domínios externos. Entre em contato com seu administrador para adicionar o URL à lista de permissões.

Depuração

Alguns erros são sutis e não acionam mensagens. Por exemplo, seu código pode ser executado, mas os resultados são inesperados. Use as estratégias a seguir para investigar scripts com comportamento inesperado.

Logging

Registre informações à medida que um script é executado usando o serviço de Cloud Logging ou os serviços de logger e console no editor de script.

Error Reporting

Para usar o Error Reporting no Google Cloud, use um projeto padrão gerenciado pelo usuário em vez de um projeto padrão.

Quando você usa um projeto padrão, os erros de execução são registrados automaticamente no Google Cloud Error Reporting. Veja os registros do Cloud e os relatórios de erros no console do Google Cloud.

Execuções

O Google Apps Script registra todas as execuções, incluindo os registros do Cloud. Para ver as execuções, clique em Execuções .

Como verificar o status do serviço

Verifique se há falhas temporárias no serviço do Google Workspace no Painel de status do Google Workspace.

Usar o depurador e pontos de interrupção

Para localizar problemas no script, execute-o no modo de depuração. Quando executado no modo de depuração, um script é pausado quando atinge um ponto de interrupção, que é uma linha destacada no script que você acha que pode ter um problema. Quando um script é pausado, ele mostra o valor de cada variável naquele momento, permitindo que você inspecione o funcionamento interno de um script sem precisar adicionar muitas instruções de registro.

Adicionar um ponto de interrupção

Para adicionar um ponto de interrupção, passe o cursor sobre o número da linha em que você quer adicionar o ponto de interrupção. À esquerda do número da linha, clique no círculo. A imagem abaixo mostra um exemplo de ponto de interrupção adicionado a um script:

Adicionar um ponto de interrupção

Executar um script no modo de depuração

Para executar o script no modo de depuração, clique em Depurar na parte de cima do editor.

Antes de executar a linha com o ponto de interrupção, o script pausa e mostra uma tabela de informações de depuração. Use essa tabela para inspecionar dados como os valores de parâmetros e as informações armazenadas em objetos.

Para controlar como o script é executado, na parte de cima do painel do Debugger, use os botões "Entrar", "Passar por cima" e "Sair". Com eles, é possível executar o script uma linha por vez e inspecionar como os valores mudam ao longo do tempo.

Erro: o código-fonte da linha atual não está disponível

O código-fonte da linha atual não está disponível

Esse erro aparece quando um arquivo de depuração ativo não está disponível. O Google Apps Script não é compatível com a exibição de scripts JavaScript (JS) gerados dinamicamente no editor de scripts, como os gerados usando eval() e new Function(). Esses scripts são criados e executados no mecanismo V8, mas não são representados como arquivos independentes no editor. Se você entrar nesses scripts, vai encontrar esse erro.

Por exemplo, considere o seguinte código:

function myFunction() {
  eval('a=2');
}

Quando eval() é invocado, o argumento dele é tratado como código JS e executado como um script criado dinamicamente no mecanismo V8. Se você entrar em eval(), esse erro vai aparecer. Se o script incluir um comentário //# sourceURL, o nome dele será mostrado na pilha de chamadas. Caso contrário, ela vai aparecer como uma entrada sem nome.

Apesar da mensagem de erro, a sessão de depuração permanece ativa, e a execução pode continuar. Para continuar, avance para a etapa "Entrar", "Sair" ou "Retomar a execução". No entanto, esse erro continua aparecendo enquanto a execução permanecer no escopo do script dinâmico. Depois que a execução sai do script dinâmico, a depuração continua sem esse erro.

Problemas com várias Contas do Google

Se você fizer login em várias Contas do Google ao mesmo tempo, poderá ter problemas para acessar seus complementos e apps da Web. Não é possível fazer login múltiplo, ou seja, em várias Contas do Google ao mesmo tempo, em projetos, complementos ou apps da Web do Apps Script.

  • Se você abrir o editor do Apps Script enquanto estiver conectado a mais de uma conta, o Google vai pedir para você escolher a conta que quer usar.

  • Se você abrir um web app ou complemento e tiver problemas com o login múltiplo, tente uma das seguintes soluções:

    • Saia de todas as Contas do Google e faça login apenas na conta que tem o complemento ou app da Web que você quer acessar.
    • Abra uma janela anônima no Google Chrome ou uma janela de navegação privada equivalente e faça login na Conta do Google que tem o complemento ou app da Web que você quer acessar.

Receber ajuda

Acesse nossa página de suporte para tirar dúvidas ou registrar bugs.