Tratamento de erros com as APIs JavaScript específicas do aplicativo

Ao criar um suplemento usando as APIs JavaScript do Office específicas do aplicativo, inclua a lógica de tratamento de erros para levar em conta os erros de tempo de execução. Fazer isso é fundamental, devido à natureza assíncrona das APIs.

Práticas recomendadas

Em nossos exemplos de código e snippets do Script Lab, você notará que cada chamada para Excel.run, PowerPoint.runou Word.run é acompanhada por uma catch instrução para capturar erros. Recomendamos que você use o mesmo padrão ao criar um suplemento usando as APIs específicas do aplicativo.

$("#run").on("click", () => tryCatch(run));

async function run() {
  await Excel.run(async (context) => {
      // Add your Excel JavaScript API calls here.

      // Await the completion of context.sync() before continuing.
    await context.sync();
    console.log("Finished!");
  });
}

/** Default helper for invoking an action and handling errors. */
async function tryCatch(callback) {
  try {
    await callback();
  } catch (error) {
    // Note: In a production add-in, you'd want to notify the user through your add-in's UI.
    console.error(error);
  }
}

Erros de API

Quando uma solicitação de API JavaScript do Office não é executada com êxito, a API retorna um objeto de erro que contém as propriedades a seguir.

  • code: a code propriedade de uma mensagem de erro contém uma cadeia de caracteres que faz parte de OfficeExtension.ErrorCodes ou {application}.ErrorCodes onde {application} representa o Excel, o PowerPoint ou o Word. Por exemplo, o código de erro "InvalidReference" indica que a referência não é válida para a operação especificada. Os códigos de erro não são localizados.

  • message: A propriedade message de uma mensagem de erro contém um resumo do erro na cadeia de caracteres localizada. A mensagem de erro não se destina ao consumo dos usuários finais; Você deve usar o código de erro e a lógica de negócios apropriada para determinar a mensagem de erro que seu suplemento mostra aos usuários finais.

  • debugInfo: Quando presente, a propriedade debugInfo da mensagem de erro fornece informações adicionais que você pode usar para compreender a causa raiz do erro.

Observação

Se for console.log() para imprimir mensagens de erro no console, essas mensagens só ficarão visíveis no servidor. Os usuários finais não veem essas mensagens de erro no painel de tarefas do suplemento ou em qualquer lugar no aplicativo do Office. Para relatar erros ao usuário, consulte Notificações de erro.

Mensagens e códigos de erro

As tabelas a seguir listam os erros que as APIs específicas do aplicativo podem retornar.

Observação

As tabelas a seguir listam mensagens de erro que você pode encontrar ao usar as APIs específicas do aplicativo. Se você estiver trabalhando com a API Comum, consulte Códigos de erro da API Comum do Office para saber mais sobre as mensagens de erro relevantes.

Código de erro Mensagem de erro Observações
AccessDenied Você não pode realizar a operação solicitada. Isso pode ser causado pelo software antivírus de um usuário bloqueando partes do Office. Consulte erros comuns e etapas de solução de problemas para "Erro: acesso negado" para obter mais diretrizes.
ActivityLimitReached O limite de atividades foi alcançado. Nenhum
ApiNotAvailable A API solicitada não está disponível. Nenhum
ApiNotFound Não foi possível encontrar a API que você está tentando usar. Ele pode estar disponível em uma versão mais recente do aplicativo do Office. Confira Disponibilidade de aplicativos e plataformas cliente do Office para Suplementos do Office para obter mais informações. Nenhum
BadPassword A senha fornecida está incorreta. Nenhum
Conflict A solicitação não pôde ser processada devido a um conflito. Nenhum
ContentLengthRequired Um Content-length cabeçalho HTTP está ausente. Nenhum
GeneralException Ocorreu um erro interno ao processar a solicitação. Nenhum
HostRestartNeeded O aplicativo do Office precisa ser reiniciado. Esse erro será gerado pelo método Office.ribbon.requestUpdate() se o suplemento que chama o método tiver sido atualizado desde que o aplicativo do Office foi iniciado.
InsertDeleteConflict A tentativa de operação de exclusão ou inserção resultou em um conflito. Nenhum
InvalidArgument O argumento é inválido, está ausente ou tem um formato incorreto. Nenhum
InvalidBinding Esta associação de objetos não é mais válida devido às atualizações anteriores. Nenhum
InvalidOperation A tentativa de operação é inválida no objeto. Nenhum
InvalidReference Esta referência não é válida para a operação atual. Nenhum
InvalidRequest Não é possível processar a solicitação. Nenhum
InvalidRibbonDefinition O Office recebeu uma definição de faixa de opções inválida. Este erro será gerado se um RibbonUpdateObject inválido for passado para o método Office.ribbon.requestUpdate().
InvalidSelection A seleção atual é inválida para esta operação. Nenhum
ItemAlreadyExists O recurso que está sendo criado já existe. Nenhum
ItemNotFound O recurso solicitado não existe. Nenhum
MemoryLimitReached O limite de memória foi atingido. Sua ação não pôde ser concluída. Nenhum
NotImplemented O recurso solicitado não foi implementado. Isso pode significar que a API está em versão prévia ou tem suporte apenas em uma plataforma específica (como somente online). Confira Disponibilidade de aplicativos e plataformas cliente do Office para Suplementos do Office para obter mais informações.
RequestAborted A solicitação foi anulada durante o tempo de execução. Nenhum
RequestPayloadSizeLimitExceeded O tamanho da carga da solicitação excedeu o limite. Consulte o artigo Limites de recursos e otimização de desempenho para suplementos do Office para obter mais informações. Esse erro ocorre apenas no Office na Web.
ResponsePayloadSizeLimitExceeded O tamanho da carga de resposta excedeu o limite. Consulte o artigo Limites de recursos e otimização de desempenho para suplementos do Office para obter mais informações. Esse erro ocorre apenas no Office na Web.
ServiceNotAvailable O serviço não está disponível. Nenhum
Unauthenticated Informações de autenticação necessárias estão ausentes ou inválidas. Nenhum
UnsupportedFeature A operação falhou porque a planilha de origem contém um ou mais recursos sem suporte. Nenhum
UnsupportedOperation Não há suporte para a operação que está sendo tentada. Nenhum

Mensagens e códigos de erro específicos do Excel

Código de erro Mensagem de erro Observações
EmptyChartSeries A operação tentada falhou porque a série do gráfico está vazia. Nenhum
FilteredRangeConflict A operação tentada causa um conflito com um intervalo filtrado. Nenhum
FormulaLengthExceedsLimit O bytecode da fórmula aplicada excede o limite de comprimento máximo. Para o Office em máquinas de 32 bits, o limite de comprimento do bytecode é de 16384 caracteres. Em computadores de 64 bits, o limite de comprimento do código de bytes é de 32768 caracteres. Esse erro ocorre no Excel na Web e na área de trabalho.
GeneralException Vários. As APIs de tipos de dados retornam GeneralException erros com mensagens de erro dinâmicas. Essas mensagens fazem referência à célula que é a origem do erro e ao problema que está causando o erro, como: "A célula A1 não tem a propriedade typenecessária".
InactiveWorkbook A operação falhou porque várias pastas de trabalho estão abertas e a pasta de trabalho que está sendo chamada por essa API perdeu o foco. Nenhum
InvalidOperationInCellEditMode A operação não estará disponível enquanto o Excel estiver no modo Editar célula. Saia do modo de Edição usando as teclas Enter ou Tab ou selecionando outra célula e tente novamente. Nenhum
MergedRangeConflict Não é possível concluir a operação. Uma tabela não pode sobrepor-se a outra tabela, a um relatório de Tabela Dinâmica, a resultados de consultas, a células mescladas ou a um Mapa XML. Nenhum
NonBlankCellOffSheet O Microsoft Excel não pode inserir novas células porque isso empurraria as células não vazias para fora do final da planilha. Essas células não vazias podem parecer vazias, mas têm valores em branco, alguma formatação ou uma fórmula. Exclua linhas ou colunas suficientes para liberar espaço para o que você deseja inserir e tente novamente. Nenhum
OperationCellsExceedLimit A operação tentada afeta mais do que o limite de 33554000 células. Se esse TableColumnCollection.add API erro for disparado, confirme se não há dados não intencionais na planilha, mas fora da tabela. Em particular, marque os dados nas colunas mais à direita da planilha. Remova os dados não intencionais para resolver esse erro. Uma maneira de verificar quantas células uma operação processa é executar o seguinte cálculo: (number of table rows) x (16383 - (number of table columns)). O número 16383 é o número máximo de colunas que o Excel dá suporte.

Esse erro ocorre apenas no Excel na Web.
PivotTableRangeConflict A operação tentada causa um conflito com um intervalo da Tabela Dinâmica. Nenhum
RangeExceedsLimit A contagem de células no intervalo excedeu o número máximo com suporte. Consulte o artigo Limites de recursos e otimização de desempenho para suplementos do Office para obter mais informações. Nenhum
RefreshWorkbookLinksBlocked A operação falhou porque o usuário não concedeu permissão para atualizar links externos da pasta de trabalho. Nenhum
UndoNotSupported A solicitação da API JavaScript falhou devido à falta de suporte para a operação desfazer. Nenhum
UnsupportedSheet Este tipo de planilha não suporta esta operação, pois é uma planilha de Macro ou Gráfico. Nenhum

Mensagens e códigos de erro específicos do Word

Código de erro Mensagem de erro Observações
SearchDialogIsOpen A caixa de diálogo de pesquisa está aberta. Nenhum
SearchStringInvalidOrTooLong A cadeia de caracteres de pesquisa é inválida ou muito longa. O máximo de cadeia de caracteres de pesquisa é de 255 caracteres.

Notificações de erro

A maneira como você relata erros aos usuários depende do sistema de interface do usuário que você está usando.

  • Se você estiver usando o React como o sistema de interface do usuário, use os componentes de interface do usuário do Fluent e os elementos de design. Recomendamos que as mensagens de erro sejam transmitidas com um componente Dialog . Se o erro estiver na entrada do usuário, configure o componente de entrada para exibir o erro como texto vermelho em negrito.

    Observação

    O componente Alerta também pode ser usado para relatar erros aos usuários, mas atualmente está em versão prévia e não deve ser usado em um suplemento de produção. Para obter informações sobre o status da versão, consulte o Roteiro do Componente React v9 da IU do Fluent.

  • Se você não estiver usando o React para a interface do usuário, considere usar os componentes mais antigos da interface do usuário do Fabric implementados diretamente em HTML e JavaScript. Alguns modelos de exemplo estão no repositório Office-Add-in-UX-Design-Patterns-Code . Dê uma olhada especialmente nas subpastas de diálogo e navegação. O exemplo Excel-Add-in-SalesLeads usa uma faixa de mensagem.

Confira também