Apporter des modifications incrémentielles aux événements dans l’affichage Calendrier
Article
L’utilisation de la requête Delta vous permet d’obtenir les événements nouveaux, mis à jour ou supprimés dans un calendrier spécifié ou au sein d’une collection d’événements définie (sous forme d’affichage calendrier) dans le calendrier. Cet article décrit l’obtention des modifications incrémentielles apportées aux événements dans un affichage calendrier.
Remarque
La fonctionnalité pour la première( obtention de modifications incrémentielles d’événements dans un calendrier non lié à une plage de dates de début et de fin fixe) est actuellement disponible uniquement dans la version bêta. Pour plus d’informations, voir fonction delta.
Un affichage Calendrier est une collection d’événements dans une plage de date/heure (.. /me/calendarView) à partir du calendrier par défaut ou d’un autre calendrier spécifié d’un utilisateur ou d’un calendrier de groupe. Les événements renvoyés peuvent inclure des instances uniques ou des occurrences et des exceptions de séries périodiques. Les données de la requête delta vous permettent de mettre à jour et de synchroniser une collection locale des événements d’un utilisateur, sans avoir à extraire l’ensemble des événements de l’utilisateur depuis le serveur.
La requête delta s’occupe à la fois de la synchronisation complète qui récupère tous les événements dans l’affichage Calendrier spécifié, et de la synchronisation incrémentielle qui récupère les événements ayant été modifiés dans l’affichage Calendrier depuis la dernière synchronisation. En règle générale, il est préférable d’effectuer une première synchronisation complète, puis d’apporter régulièrement des modifications incrémentielles à cet affichage calendrier et.
Suivi des modifications apportées aux événements dans l’affichage Calendrier
La requête delta pour les événements dans l’affichage Calendrier est spécifique au calendrier et à la plage date/heure indiqués. Pour suivre les modifications apportées dans plusieurs calendriers, vous devez suivre chaque calendrier individuellement.
Le suivi des modifications apportées aux événements dans un affichage Calendrier correspond généralement à une série de requêtes GET envoyées avec la fonction delta. Le processus de la première requête GET ressemble à celui de la requête List calendarView, sauf que vous incluez la fonction delta. Voici la requête GET delta initiale d’un affichage Calendrier dans le calendrier par défaut de l’utilisateur connecté :
GET /me/calendarView/delta?startDateTime={start_datetime}&endDateTime={end_datetime}
Une requête GET avec la fonction delta renvoie, soit :
@odata.nextLink (qui contient une URL avec un appel de la fonction delta et un$skipToken), ou
@odata.deltaLink (qui contient une URL avec un appel de la fonction delta et un$deltaToken).
Ces jetons d’état codent les paramètres startDateTime et endDateTime, et les autres paramètres de requête inclus dans votre première requête GET effectuée avec la fonction delta. Vous n’avez pas besoin d’inclure ces paramètres dans les requêtes suivantes, car ils sont codés dans les jetons.
Les jetons d’état sont complètement opaques pour le client.
Pour réaliser une première série de suivis des modifications, copiez et appliquez l’URL @odata.nextLink ou @odata.deltaLink renvoyée par la dernière requête GET à l’autre appel de la fonction delta pour le même affichage Calendrier. Si @odata.deltaLink est renvoyé, la série de suivis des modifications en cours est terminée. Vous pouvez enregistrer et utiliser l’URL @odata.deltaLink quand vous lancez la série de suivis suivante.
Consultez l’exemple ci-dessous pour savoir comment utiliser les URL @odata.nextLink et @odata.deltaLink.
Utilisation des paramètres de requête dans une requête delta pour l’affichage Calendrier
Inclure les paramètres startDateTime et endDateTime pour définir une plage date/heure pour votre affichage Calendrier.
$select n’est pas pris en charge.
En-tête de requête facultatif
Chaque requête GET effectuée avec la fonction delta renvoie une collection d’un ou de plusieurs événements dans la réponse. Vous pouvez spécifier l’en-tête de la requête, Prefer: odata.maxpagesize={x}, pour définir le nombre maximal d’événements à inclure dans une réponse.
Exemple pour synchroniser les événements dans un affichage calendrier
L’exemple suivant montre une série de 3 requêtes pour synchroniser le calendrier par défaut de l’utilisateur dans un intervalle de temps spécifique. Il existe 5 événements dans cet affichage Calendrier.
Pour des raisons de concision, les exemples de réponse montrent uniquement un sous-ensemble des propriétés d’un événement. Dans un véritable appel, la plupart des propriétés de l’événement sont renvoyées.
Dans cet exemple, l’affichage Calendrier spécifié dans le calendrier par défaut de l’utilisateur connecté est synchronisé pour la première fois. C’est pourquoi la synchronisation initiale ne contient aucun jeton d’état.
Cette série renvoie tous les événements figurant dans cet affichage Calendrier.
La première requête comprend les éléments suivants :
Valeurs de date/heure des paramètres startDateTime et endDateTime.
GET https://graph.microsoft.com/v1.0/me/calendarView/delta?startdatetime=2016-12-01T00:00:00Z&enddatetime=2016-12-30T00:00:00Z HTTP/1.1
Prefer: odata.maxpagesize=2
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.CalendarView.Delta.GetAsDeltaGetResponseAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.StartDateTime = "2016-12-01T00:00:00Z";
requestConfiguration.QueryParameters.EndDateTime = "2016-12-30T00:00:00Z";
requestConfiguration.Headers.Add("Prefer", "odata.maxpagesize=2");
});
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
var result = graphClient.me().calendarView().delta().get(requestConfiguration -> {
requestConfiguration.queryParameters.startDateTime = "2016-12-01T00:00:00Z";
requestConfiguration.queryParameters.endDateTime = "2016-12-30T00:00:00Z";
requestConfiguration.headers.add("Prefer", "odata.maxpagesize=2");
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.item.calendar_view.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
start_date_time = "2016-12-01T00:00:00Z",
end_date_time = "2016-12-30T00:00:00Z",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
request_configuration.headers.add("Prefer", "odata.maxpagesize=2")
result = await graph_client.me.calendar_view.delta.get(request_configuration = request_configuration)
La réponse comprend deux événements et un en-tête de réponse @odata.nextLink avec un jeton skipToken.
L’URL @odata.nextLink indique qu’il est possible de récupérer plusieurs événements de l’affichage Calendrier.
La deuxième requête comprend l’URL @odata.nextLink renvoyée par la réponse précédente. Notez qu’il est inutile de repréciser les paramètres startDateTime et endDateTime, puisqu’ils sont codés et inclus par le jeton skipToken présent dans l’URL @odata.nextLink.
GET https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken=R0usmcCM996atia_s HTTP/1.1
Prefer: odata.maxpagesize=2
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
// Note: The URI string parameter used with WithUrl() can be retrieved using the OdataNextLink or OdataDeltaLink property from a response object
var result = await graphClient.Me.CalendarView.Delta.WithUrl("https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken=R0usmcCM996atia_s").GetAsDeltaGetResponseAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "odata.maxpagesize=2");
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
abstractions "github.com/microsoft/kiota-abstractions-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
headers := abstractions.NewRequestHeaders()
headers.Add("Prefer", "odata.maxpagesize=2")
requestSkiptoken := "R0usmcCM996atia_s"
requestParameters := &graphusers.CalendarViewDeltaRequestBuilderGetQueryParameters{
Skiptoken: &requestSkiptoken,
}
configuration := &graphusers.CalendarViewDeltaRequestBuilderGetRequestConfiguration{
Headers: headers,
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Me().CalendarView().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.item.calendarview.delta.DeltaRequestBuilder deltaRequestBuilder = new com.microsoft.graph.users.item.calendarview.delta.DeltaRequestBuilder("https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken=R0usmcCM996atia_s", graphClient.getRequestAdapter());
com.microsoft.graph.users.item.calendarview.delta.DeltaGetResponse result = deltaRequestBuilder.get(requestConfiguration -> {
requestConfiguration.headers.add("Prefer", "odata.maxpagesize=2");
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.item.calendar_view.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
skiptoken = "R0usmcCM996atia_s",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
request_configuration.headers.add("Prefer", "odata.maxpagesize=2")
result = await graph_client.me.calendar_view.delta.get(request_configuration = request_configuration)
La deuxième réponse renvoie les 2 événements suivants dans l’affichage Calendrier et une autre URL @odata.nextLink, indiquant qu’il est possible de récupérer d’autres événements dans l’affichage Calendrier.
GET https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken=R0usmci39OQxqJrxK4 HTTP/1.1
Prefer: odata.maxpagesize=2
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
// Note: The URI string parameter used with WithUrl() can be retrieved using the OdataNextLink or OdataDeltaLink property from a response object
var result = await graphClient.Me.CalendarView.Delta.WithUrl("https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken=R0usmci39OQxqJrxK4").GetAsDeltaGetResponseAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "odata.maxpagesize=2");
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
abstractions "github.com/microsoft/kiota-abstractions-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
headers := abstractions.NewRequestHeaders()
headers.Add("Prefer", "odata.maxpagesize=2")
requestSkiptoken := "R0usmci39OQxqJrxK4"
requestParameters := &graphusers.CalendarViewDeltaRequestBuilderGetQueryParameters{
Skiptoken: &requestSkiptoken,
}
configuration := &graphusers.CalendarViewDeltaRequestBuilderGetRequestConfiguration{
Headers: headers,
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Me().CalendarView().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.item.calendarview.delta.DeltaRequestBuilder deltaRequestBuilder = new com.microsoft.graph.users.item.calendarview.delta.DeltaRequestBuilder("https://graph.microsoft.com/v1.0/me/calendarView/delta?$skiptoken=R0usmci39OQxqJrxK4", graphClient.getRequestAdapter());
com.microsoft.graph.users.item.calendarview.delta.DeltaGetResponse result = deltaRequestBuilder.get(requestConfiguration -> {
requestConfiguration.headers.add("Prefer", "odata.maxpagesize=2");
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.item.calendar_view.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
skiptoken = "R0usmci39OQxqJrxK4",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
request_configuration.headers.add("Prefer", "odata.maxpagesize=2")
result = await graph_client.me.calendar_view.delta.get(request_configuration = request_configuration)
La troisième réponse renvoie le dernier événement restant dans l’affichage Calendrier et une URL @odata.deltaLink indiquant que la synchronisation de cet affichage Calendrier est terminée. Enregistrez et utilisez l’URL @odata.deltaLink pour synchroniser cet affichage Calendrier lors de la prochaine série.
En utilisant l’URL @odata.deltaLink renvoyée par la dernière requête de la série précédente, vous pouvez récupérer uniquement les événements qui ont été ajoutés, supprimés ou mis à jour dans cet affichage Calendrier.
Voici à quoi ressemblera la première requête de cette deuxième série de suivis, à condition que vous conserviez le même format de page maximal dans la réponse :
GET https://graph.microsoft.com/v1.0/me/calendarView/delta?$deltatoken=R0usmcMDNGg0J1E HTTP/1.1
Prefer: odata.maxpagesize=2
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
// Note: The URI string parameter used with WithUrl() can be retrieved using the OdataNextLink or OdataDeltaLink property from a response object
var result = await graphClient.Me.CalendarView.Delta.WithUrl("https://graph.microsoft.com/v1.0/me/calendarView/delta?$deltatoken=R0usmcMDNGg0J1E").GetAsDeltaGetResponseAsync((requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "odata.maxpagesize=2");
});
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
abstractions "github.com/microsoft/kiota-abstractions-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
headers := abstractions.NewRequestHeaders()
headers.Add("Prefer", "odata.maxpagesize=2")
requestDeltatoken := "R0usmcMDNGg0J1E"
requestParameters := &graphusers.CalendarViewDeltaRequestBuilderGetQueryParameters{
Deltatoken: &requestDeltatoken,
}
configuration := &graphusers.CalendarViewDeltaRequestBuilderGetRequestConfiguration{
Headers: headers,
QueryParameters: requestParameters,
}
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
delta, err := graphClient.Me().CalendarView().Delta().GetAsDeltaGetResponse(context.Background(), configuration)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.item.calendarview.delta.DeltaRequestBuilder deltaRequestBuilder = new com.microsoft.graph.users.item.calendarview.delta.DeltaRequestBuilder("https://graph.microsoft.com/v1.0/me/calendarView/delta?$deltatoken=R0usmcMDNGg0J1E", graphClient.getRequestAdapter());
com.microsoft.graph.users.item.calendarview.delta.DeltaGetResponse result = deltaRequestBuilder.get(requestConfiguration -> {
requestConfiguration.headers.add("Prefer", "odata.maxpagesize=2");
});
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.item.calendar_view.delta.delta_request_builder import DeltaRequestBuilder
from kiota_abstractions.base_request_configuration import RequestConfiguration
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
query_params = DeltaRequestBuilder.DeltaRequestBuilderGetQueryParameters(
deltatoken = "R0usmcMDNGg0J1E",
)
request_configuration = RequestConfiguration(
query_parameters = query_params,
)
request_configuration.headers.add("Prefer", "odata.maxpagesize=2")
result = await graph_client.me.calendar_view.delta.get(request_configuration = request_configuration)