Control de errores para las API de Excel

En este artículo se proporcionan instrucciones generales y sugerencias para controlar los errores devueltos por las API de Excel en Microsoft Graph cuando se produce un error en una solicitud enviada a través de la API.

Tipos de respuestas de error

Las API de Excel en Microsoft Graph devuelven dos tipos de errores. Una es la respuesta de error normal, que es similar a la siguiente.

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

{
  "error": <Error object>
}

El segundo es del patrón de operación de ejecución prolongada, que puede devolver un código de estado HTTP y failed un 200 OK estado de operación en el cuerpo de la respuesta, como en el ejemplo siguiente.

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

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

Para estas dos respuestas de error, el objeto de error tiene la siguiente estructura.

Nota:

Las respuestas de error siguen la definición en la especificación OData v4 de las respuestas de error.

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

El objeto innerError podría contener de forma recursiva más objetos innerError con códigos de error adicionales más específicos. Por ejemplo, el objeto de error podría contener información de error más detallada en el código y el mensaje de error de segundo nivel, como se muestra.

{
  "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" }
  }
}

Pasos para controlar las respuestas de error

Se espera que los clientes de Microsoft Graph usen los pasos siguientes para controlar los errores que se producen con las API de Excel.

1. Determinar si se trata de un error de operación de ejecución prolongada

Antes de controlar un error, el primer paso consiste en determinar si la respuesta del error procede de un patrón de operación de ejecución prolongada o de un patrón normal. Un error de operación de ejecución prolongada devolverá un código de estado HTTP y failed un 200 OK estado de operación en el cuerpo de la respuesta. Una respuesta de error normal devolverá un código de estado de error HTTP correspondiente.

2. Analizar código de error de segundo nivel

Tanto para el patrón de operación de ejecución prolongada como para el patrón normal, el cliente primero debe analizar los códigos de error de segundo nivel necesarios y controlarlos según las instrucciones. Opcionalmente, el cliente también puede controlar otros códigos de error de segundo nivel o optar por volver a códigos de error o códigos de estado de nivel superior.

Los códigos de error no distinguen mayúsculas de minúsculas.

Códigos de error de segundo nivel necesarios

En la tabla siguiente se enumeran las instrucciones para los códigos de error de segundo nivel necesarios que se espera que controlen los clientes de Microsoft Graph. El servicio puede agregar nuevos códigos de error en cualquier momento.

Código Instrucciones
accessConflict La solicitud con error entra en conflicto con otros clientes que acceden al libro (por ejemplo, otro cliente ha bloqueado el libro para su edición). No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores hasta que se resuelva el conflicto. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles sobre el conflicto.
badRequestUncategorized Se encuentra un error no especificado en la solicitud con error. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
conflictUncategorized La solicitud con error entra en conflicto con cierto estado de servidor. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores hasta que se resuelva el conflicto. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles sobre el conflicto.
forbiddenUncategorized No se permite la solicitud con errores. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles sobre las restricciones.
gatewayTimeoutUncategorized El servicio no pudo completar la solicitud dentro del límite de tiempo.
internalServerErrorUncategorized Se ha producido un error no especificado. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores. Si se especifica una sesión en la solicitud con error, tampoco se espera más acceso a la sesión.
invalidSessionAccessConflict La sesión especificada en la solicitud no es válida debido a conflictos con otros clientes que acceden al libro (por ejemplo, otro cliente ha bloqueado el libro para su edición). No se espera más acceso a la sesión especificada en la solicitud con error. No se espera volver a crear sesiones con la misma solicitud createSession hasta que se resuelva el conflicto. La recreación de sesiones con una solicitud createSession diferente podría o no realizarse correctamente. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles sobre el conflicto.
invalidSessionAuthentication La sesión especificada en la solicitud no es válida debido a un error de autenticación. No se espera más acceso a la sesión especificada en la solicitud con error. No se espera volver a crear sesiones con la misma solicitud createSession hasta que se proporcione la información de autenticación adecuada.
invalidSessionNotFound La sesión especificada en la solicitud no es válida porque no se encuentra el libro. No se espera más acceso a la sesión especificada en la solicitud con error. No se espera volver a crear sesiones con la misma solicitud createSession .
invalidSessionReCreatable La sesión especificada en la solicitud no existe o no es válida debido a un error transitorio. El cliente de Microsoft Graph puede intentar volver a crear una sesión y reanudar el trabajo. No se espera más acceso a la sesión especificada en la solicitud con error.
invalidSessionRestricted La sesión especificada en la solicitud no es válida debido a las configuraciones o restricciones del servicio. No se espera más acceso a la sesión especificada en la solicitud con error. No se espera volver a crear sesiones con la misma solicitud createSession hasta que cambien las restricciones o configuraciones que bloquean la solicitud. La recreación de sesiones con una solicitud createSession diferente podría o no realizarse correctamente. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles de las restricciones.
invalidSessionUnexpected La sesión especificada en la solicitud no es válida debido a un problema inesperado. No se espera más acceso a la sesión especificada en la solicitud con error. No se espera volver a crear sesiones con la misma solicitud createSession . La recreación de sesiones con una solicitud createSession diferente podría o no realizarse correctamente.
invalidSessionUnsupportedWorkbook La sesión especificada en la solicitud no es válida porque el libro contiene características no admitidas o supera el límite de tamaño. Normalmente, otro cliente que accede al libro introduce los factores no admitidos. No se espera más acceso a la sesión especificada en la solicitud con error. No se espera volver a crear sesiones con la misma solicitud createSession hasta que se quiten los factores no admitidos. La recreación de sesiones con una solicitud createSession diferente podría o no realizarse correctamente. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles de los factores no admitidos, o con Excel Desktop donde podría admitirse el libro.
methodNotAllowedUncategorized No se permite el método HTTP especificado en la solicitud en el recurso. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
notFoundUncategorized No se encuentra el recurso solicitado. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
notImplementedUncategorized La característica solicitada no está implementada actualmente. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
payloadTooLargeUncategorized La carga de la solicitud supera el límite de tamaño. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
serviceUnavailableUncategorized El servicio no está disponible temporalmente o está sobrecargado. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores hasta que pase la duración de tiempo de reutilización especificada.
tooManyRequestsUncategorized La solicitud con error supera cierta limitación de frecuencia. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores hasta que pase la duración de tiempo de reutilización especificada. Para conocer los procedimientos recomendados para reducir la limitación, consulte Reducción de errores de limitación.
transientFailure Error en la solicitud debido a un error transitorio. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores hasta que pase la duración de tiempo de reutilización especificada.
unauthorizedUncategorized Falta información de autenticación necesaria para el recurso o no es válida. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
unsupportedWorkbook Error en la solicitud. El libro contiene características no admitidas o supera el límite de tamaño. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores hasta que se quiten los factores no admitidos.

Nota:

Para el patrón normal, la solicitud con error se define como la solicitud que corresponde a la respuesta. Para el patrón de operación de ejecución prolongada, la solicitud con error es la que desencadena la operación con errores.

Ejemplos opcionales de código de error de segundo nivel

En la tabla siguiente se enumeran ejemplos de códigos de error opcionales de segundo nivel, incluidas las instrucciones de control correspondientes para cada código de error. El servicio puede agregar nuevos códigos de error en cualquier momento.

Código Instrucciones
accessDenied No se puede realizar la operación solicitada (por ejemplo, realizar cambios en celdas bloqueadas). No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
filteredRangeConflict Error en la operación porque entra en conflicto con un intervalo filtrado. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
generalException Error interno al procesar la solicitud. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
insertDeleteConflict La operación de inserción o eliminación intentada dio lugar a un conflicto. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores. Un usuario final puede optar por realizar manualmente las mismas operaciones con Excel Online para obtener más detalles sobre el conflicto.
invalidArgument El argumento no es válido, falta o tiene un formato incorrecto. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
invalidReference Esta referencia no es válida para la operación actual. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
itemAlreadyExists El recurso que se está creando ya existe. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
itemNotFound El recurso solicitado no existe. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
methodNotAllowed No se permite el método HTTP especificado en la solicitud en el recurso. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
nonBlankCellOffSheet No se pueden insertar nuevas celdas porque insertaría celdas no vacías fuera del final de la hoja de cálculo. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores. Un usuario final puede eliminar filas o columnas para dejar espacio al contenido que se va a insertar y, a continuación, volver a intentarlo.
rangeExceedsLimit El recuento de celdas en el intervalo ha superado el número máximo admitido. El cliente de Microsoft Graph puede intentar enviar una solicitud con un tamaño de intervalo más pequeño. Para obtener más información, vea Límites de recursos y optimización del rendimiento para complementos de Office.
requestAborted La solicitud se anuló durante el tiempo de ejecución, lo que normalmente se debe al cálculo de largo tiempo de las funciones del libro. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.
unsupportedOperation No se admite la operación que se está intentando. No se espera que el cliente de Microsoft Graph vuelva a enviar la solicitud con errores.

Nota:

Para el patrón normal, la solicitud con error se define como la solicitud que corresponde a la respuesta. Para el patrón de operación de ejecución prolongada, la solicitud con error es la que desencadena la operación con errores.

3. Análisis del código de error de nivel superior

Si no encuentra ningún código de error conocido de segundo nivel, debe seguir las instrucciones proporcionadas para los errores de nivel superior. Los códigos de error de nivel superior están enlazados al código de estado y puede realizar acciones según los códigos de estado correspondientes. Para obtener más información sobre los mensajes y códigos de error de nivel superior, consulte Códigos de error y mensajes.

4. Análisis del código de estado

Para el patrón normal, si no pudo encontrar ningún código de error de segundo nivel conocido o código de error de nivel superior, debe realizar una acción según el código de estado HTTP.

5. Tiempo de reutilización de recuperación de errores

Para algunas de las respuestas del patrón normal, es posible que se proporcione una duración de tiempo de reutilización de recuperación en segundos a través de un Retry-After encabezado. Cuando hay una duración de tiempo de reutilización de recuperación, no se espera que el cliente de Microsoft Graph envíe ninguna solicitud de seguimiento antes de que pase la duración especificada. Para conocer los procedimientos recomendados relacionados con el Retry-After encabezado y la limitación, consulte Reducción de errores de limitación.

Información de diagnóstico

Todo el contenido de la respuesta que no se usa en los pasos anteriores es solo para fines de diagnóstico (incluidas las cadenas en los campos de mensaje ). No se recomienda que tome una dependencia de estos contenidos, ya que podrían cambiar sin previo aviso.

Control especial de casos

En el caso de las solicitudes con sesión, si encuentra un 502/badGateway error o 503/serviceUnavailable , cuando se encuentra un código de error de segundo nivel conocido, siga las instrucciones correspondientes; de lo contrario, debe volver a crear la sesión directamente.