Cargar los correos electrónicos de un usuario en lotes

Completado

Ha creado una aplicación de JavaScript, la ha conectado a Microsoft 365 y ha mostrado los últimos 10 correos electrónicos del usuario mediante Microsoft Graph. Ahora ampliaremos la aplicación para que los usuarios puedan cargar sus correos electrónicos en lotes de 10 elementos.

Recuperar datos paginados mediante Microsoft Graph

Al llamar a una API de Microsoft Graph que devuelve un conjunto de datos, como la API de mensajes que usó anteriormente, recibirá un subconjunto de los datos almacenados en Microsoft 365. Para comprobar si hay más datos que la aplicación pueda recuperar, comprueba si la respuesta contiene la propiedad @odata.nextLink.

var emails = graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

if (emails['@odata.nextLink']) {
  // more data available
}

La propiedad @odata.nextLink contiene una dirección URL completa a la que puede llamar para recuperar la segunda página de resultados. Esta dirección URL conserva toda la configuración de la solicitud inicial, como qué propiedades recuperar, cómo ordenar los datos y cuántos elementos se obtendrán.

Para cargar el siguiente lote de datos, pase la dirección URL devuelta en @odata.nextLink a graphClient:

var emails = graphClient
  .api('/me/messages')
  .select('subject,receivedDateTime')
  .orderby('receivedDateTime desc')
  .top(10)
  .get();

if (emails['@odata.nextLink']) {
  var moreEmails = graphClient
    .api(emails['@odata.nextLink'])
    .get();
}

Después de recuperar la segunda página de resultados, puede ver si hay más datos disponibles comprobando si los resultados tienen establecida la propiedad @odata.nextLink.

Precaución

Microsoft Graph sigue el estándar OData 4. Una parte del estándar es la capacidad de usar la combinación de parámetros $top y $skip (los métodos top y skip de Microsoft Graph SDK) para recuperar una página de datos específica. Esto no es posible cuando se trabaja con correos electrónicos porque una carpeta de correo electrónico puede contener otros datos aparte del correo electrónico, lo que podría afectar a la paginación. Este es el motivo por el que, al trabajar con correos electrónicos, siempre debe usar el valor @odata.nextLink para cargar más datos.

Siguientes pasos

Ampliaremos la aplicación para que permita a los usuarios cargar más correos electrónicos en lotes.