Tratamento de erros para APIs do Excel

Este artigo fornece instruções gerais e sugestões para lidar com erros retornados pelas APIs do Excel no Microsoft Graph quando uma solicitação enviada por meio da API falha.

Tipos de respostas de erro

As APIs do Excel no Microsoft Graph retornam dois tipos de erros. Uma é a resposta de erro regular, que se parece com a seguinte.

HTTP/1.1 <HTTP status code>
Content-type: application/json
Retry-After: <Cooldown duration in seconds> (optional)

{
  "error": <Error object>
}

A segunda é do padrão de operação de longa execução, que pode retornar um 200 OK código de status HTTP e failed o status da operação no corpo da resposta, como no exemplo a seguir.

HTTP/1.1 200 OK
Content-type: application/json

{
  "status": "failed",
  "error": <Error object>
}

Para ambas as respostas de erro, o objeto de erro tem a estrutura a seguir.

Observação

Respostas de erro seguem a definição na especificação OData v4 para respostas de erro.

{
  "code": "string",
  "message": "string",
  "innerError": { "@odata.type": "odata.error" }
}

O objeto innerError pode conter recursivamente mais objetos innerError com códigos de erro adicionais mais específicos. Por exemplo, o objeto de erro pode conter informações de erro mais detalhadas no código e na mensagem de erro de segundo nível, conforme mostrado.

{
  "code": "Top-level error code",
  "message": "Top-level error message",
  "innerError": {
    "code": "Second-level error code",
    "message": "Second-level error message",
    "innerError": { "@odata.type": "odata.error" }
  }
}

Etapas para lidar com respostas de erro

Espera-se que os clientes do Microsoft Graph usem as etapas a seguir para lidar com erros que ocorrem com APIs do Excel.

1. Determine se é um erro de operação de execução prolongada

Antes de lidar com um erro, a primeira etapa é determinar se a resposta do erro é de um padrão de operação de longa duração ou de um padrão regular. Um erro de operação de execução prolongada retornará um código de status HTTP e failed o 200 OK status da operação no corpo da resposta. Uma resposta de erro regular retornará um código de status de erro HTTP correspondente.

2. Analisar o código de erro de segundo nível

Para o padrão de operação de longa duração e o padrão regular, o cliente deve primeiro analisar os códigos de erro de segundo nível necessários e tratá-los de acordo com as instruções. Opcionalmente, o cliente também pode lidar com outros códigos de erro de segundo nível ou optar por recorrer a códigos de erro de nível superior ou códigos de status.

Os códigos de erro não diferenciam maiúsculas de minúsculas.

Códigos de erro de segundo nível necessários

A tabela a seguir lista instruções para códigos de erro de segundo nível necessários que os clientes do Microsoft Graph devem manipular. O serviço pode adicionar novos códigos de erro a qualquer momento.

Código Instruções
accessConflict A solicitação com falha está em conflito com outros clientes que acessam a pasta de trabalho (por exemplo, outro cliente bloqueou a pasta de trabalho para edição). Não se espera que o cliente do Microsoft Graph reenvie a solicitação com falha até que o conflito seja resolvido. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes sobre o conflito.
badRequestUncategorized Um erro não especificado é encontrado na solicitação com falha. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
conflictUncategorized A solicitação com falha entra em conflito com determinado estado do servidor. Não se espera que o cliente do Microsoft Graph reenvie a solicitação com falha até que o conflito seja resolvido. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes sobre o conflito.
forbiddenUncategorized A solicitação com falha não é permitida. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes sobre as restrições.
gatewayTimeoutUncategorized O serviço não pôde concluir a solicitação dentro do limite de tempo.
internalServerErrorUncategorized Ocorreu um erro não especificado. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha. Se uma sessão for especificada na solicitação com falha, também não se espera mais acesso à sessão.
invalidSessionAccessConflict A sessão especificada na solicitação é inválida devido a conflitos com outros clientes que estão acessando a pasta de trabalho (por exemplo, outro cliente bloqueou a pasta de trabalho para edição). Não é esperado mais acesso à sessão especificada na solicitação com falha. A recriação de sessões com a mesma solicitação createSession não é esperada até que o conflito seja resolvido. A recriação de sessões com uma solicitação createSession diferente pode ou não ser bem-sucedida. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes sobre o conflito.
invalidSessionAuthentication A sessão especificada na solicitação é inválida devido a um erro de autenticação. Não é esperado mais acesso à sessão especificada na solicitação com falha. A recriação de sessões com a mesma solicitação createSession não é esperada até que as informações de autenticação apropriadas sejam fornecidas.
invalidSessionNotFound A sessão especificada na solicitação é inválida porque a pasta de trabalho não pode ser encontrada. Não é esperado mais acesso à sessão especificada na solicitação com falha. Não é esperado a recriação de sessões com a mesma solicitação createSession .
invalidSessionReCreatable A sessão especificada na solicitação não existe ou é inválida devido a um erro transitório. O cliente do Microsoft Graph pode tentar recriar uma sessão e retomar o trabalho. Não é esperado mais acesso à sessão especificada na solicitação com falha.
invalidSessionRestricted A sessão especificada na solicitação é inválida devido a configurações ou restrições de serviço. Não é esperado mais acesso à sessão especificada na solicitação com falha. A recriação de sessões com a mesma solicitação createSession não é esperada até que as restrições ou configurações que bloqueiam a solicitação sejam alteradas. A recriação de sessões com uma solicitação createSession diferente pode ou não ser bem-sucedida. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes sobre as restrições.
invalidSessionUnexpected A sessão especificada na solicitação é inválida devido a um problema inesperado. Não é esperado mais acesso à sessão especificada na solicitação com falha. Não é esperado a recriação de sessões com a mesma solicitação createSession . A recriação de sessões com uma solicitação createSession diferente pode ou não ser bem-sucedida.
invalidSessionUnsupportedWorkbook A sessão especificada na solicitação é inválida porque a pasta de trabalho contém recursos sem suporte ou excede o limite de tamanho. Normalmente, os fatores sem suporte são introduzidos por outro cliente que acessa a pasta de trabalho. Não é esperado mais acesso à sessão especificada na solicitação com falha. A recriação de sessões com a mesma solicitação createSession não é esperada até que os fatores sem suporte sejam removidos. A recriação de sessões com uma solicitação createSession diferente pode ou não ser bem-sucedida. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes dos fatores sem suporte ou com o Excel Desktop, onde a pasta de trabalho pode ter suporte.
methodNotAllowedUncategorized O método HTTP especificado na solicitação não é permitido no recurso. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
notFoundUncategorized Não é possível encontrar o recurso solicitado. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
notImplementedUncategorized O recurso solicitado não está implementado no momento. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
payloadTooLargeUncategorized A carga da solicitação excede o limite de tamanho. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
serviceUnavailableUncategorized O serviço está temporariamente indisponível ou está sobrecarregado. Não se espera que o cliente do Microsoft Graph reenvie a solicitação com falha até que a duração de espera especificada passe.
tooManyRequestsUncategorized A solicitação com falha excede determinada limitação de frequência. Não se espera que o cliente do Microsoft Graph reenvie a solicitação com falha até que a duração de espera especificada passe. Para obter práticas recomendadas para reduzir a limitação, consulte Reduzir erros de limitação.
transientFailure A solicitação falhou devido a um erro transitório. Não se espera que o cliente do Microsoft Graph reenvie a solicitação com falha até que a duração de espera especificada passe.
unauthorizedUncategorized As informações de autenticação necessárias para o recurso estão ausentes ou são inválidas. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
unsupportedWorkbook A solicitação falhou. A pasta de trabalho contém recursos incompatíveis ou excede o limite de tamanho. Não se espera que o cliente do Microsoft Graph reenvie a solicitação com falha até que os fatores sem suporte sejam removidos.

Observação

Para o padrão regular, a solicitação com falha é definida como a solicitação que corresponde à resposta. Para o padrão de operação de execução prolongada, a solicitação com falha é aquela que dispara a operação com falha.

Exemplos opcionais de código de erro de segundo nível

A tabela a seguir lista exemplos de códigos de erro opcionais de segundo nível, incluindo as instruções de tratamento correspondentes para cada código de erro. O serviço pode adicionar novos códigos de erro a qualquer momento.

Código Instruções
accessDenied Você não pode executar a operação solicitada (por exemplo, executar alterações em células bloqueadas). Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
filteredRangeConflict A operação falhou porque está em conflito com um intervalo filtrado. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
generalException Ocorreu um erro interno ao processar a solicitação. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
insertDeleteConflict A tentativa de operação de exclusão ou inserção resultou em um conflito. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha. Um usuário final pode optar por executar manualmente as mesmas operações com o Excel Online para obter mais detalhes sobre o conflito.
invalidArgument O argumento é inválido, está ausente ou tem um formato incorreto. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
invalidReference Esta referência não é válida para a operação atual. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
itemAlreadyExists O recurso que está sendo criado já existe. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
itemNotFound O recurso solicitado não existe. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
methodNotAllowed O método HTTP especificado na solicitação não é permitido no recurso. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
nonBlankCellOffSheet Não é possível inserir novas células porque isso empurraria as células não vazias para fora do final da planilha. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha. Um usuário final pode excluir linhas ou colunas para liberar espaço para que o conteúdo seja inserido e tentar novamente.
rangeExceedsLimit A contagem de células no intervalo excedeu o número máximo com suporte. O cliente do Microsoft Graph pode tentar enviar uma solicitação com tamanho de intervalo menor. Para obter mais informações, consulte Limites de recursos e otimização de desempenho para suplementos do Office.
requestAborted A solicitação foi anulada durante o tempo de execução, o que geralmente era causado pelo cálculo de longo prazo das funções na pasta de trabalho. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.
unsupportedOperation Não há suporte para a operação que está sendo tentada. Não se espera que o cliente Microsoft Graph reenvie a solicitação com falha.

Observação

Para o padrão regular, a solicitação com falha é definida como a solicitação que corresponde à resposta. Para o padrão de operação de execução prolongada, a solicitação com falha é aquela que dispara a operação com falha.

3. Analisar o código de erro de nível superior

Se não encontrar nenhum código de erro de segundo nível conhecido, você deverá seguir as instruções fornecidas para erros de nível superior. Os códigos de erro de nível superior estão vinculados ao código de status e você pode executar uma ação de acordo com os códigos de status correspondentes. Para obter detalhes sobre códigos de erro e mensagens de nível superior, consulte Mensagens e códigos de erro.

4. Analise o código de status

Para o padrão regular, se você não encontrar nenhum código de erro de segundo nível conhecido ou código de erro de nível superior, deverá agir de acordo com o código de status HTTP.

5. Tempo de espera da recuperação de erros

Para algumas das respostas no padrão regular, uma duração de espera de recuperação em segundos pode ser fornecida por meio de um Retry-After cabeçalho. Quando uma duração de espera de recuperação está presente, não se espera que o cliente do Microsoft Graph envie nenhuma solicitação de acompanhamento antes que a duração especificada passe. Para obter práticas recomendadas relacionadas a Retry-After cabeçalho e limitação, consulte Reduzir erros de limitação.

Informações de diagnóstico

Todo o conteúdo da resposta que não é usado nas etapas anteriores é apenas para fins de diagnóstico (incluindo cadeias de caracteres nos campos de mensagem). Não recomendamos que você dependa desses conteúdos, pois eles podem ser alterados sem aviso prévio.

Tratamento de casos especiais

Para solicitações de sessão, se você encontrar um 502/badGateway erro OR 503/serviceUnavailable , quando um código de erro de segundo nível conhecido for encontrado, siga as instruções correspondentes; caso contrário, você deverá recriar a sessão diretamente.