Mettre à jour une série périodique à l’aide d’EWS
Découvrez comment modifier des rendez-vous dans une série périodique à l’aide de l’API managée EWS ou EWS dans Exchange.
Vous pouvez utiliser l’API managée EWS ou EWS pour mettre à jour une série périodique en mettant à jour la série entière ou en mettant à jour une seule occurrence. Dans cet article, nous allons expliquer comment mettre à jour une seule occurrence.
La modification d’un rendez-vous unique dans une série est très similaire à la modification d’un rendez-vous d’instance unique. Vous utilisez les mêmes méthodes et opérations, mais vous utilisez l’ID d’élément de l’occurrence que vous souhaitez modifier.
Lorsque vous modifiez une occurrence unique dans une série, cette occurrence est ajoutée à un tableau de rendez-vous modifiés associés au maître périodique pour la série. Vous pouvez utiliser la propriété API managée EWS Appointment.ModifiedOccurrences ou l’élément EWS ModifiedOccurrences pour accéder à tous les rendez-vous d’une série qui ont été modifiés.
Modifier une occurrence unique dans une série à l’aide de l’API managée EWS
Liez à l’occurrence que vous souhaitez modifier à l’aide de la méthode Appointment.BindToOccurrence avec la valeur d’index de l’élément ou de la méthode Appointment.Bind avec l’ID de l’occurrence. Vous obtenez cet ID à partir de la propriété Id d’un objet Appointment qui correspond à l’occurrence ou de la propriété ItemId de l’objet OccurrenceInfo qui correspond à l’occurrence.
Mettez à jour les propriétés de l’objet Appointment de l’occurrence.
Enregistrez les modifications apportées à l’objet appointment de l’occurrence à l’aide de la méthode Appointment.Save .
L’exemple suivant met à jour un rendez-vous dans une série périodique et vérifie que le rendez-vous modifié est mis à jour sur le maître périodique. Cet exemple suppose que vous ont été authentifiés auprès d'un serveur Exchange et que vous avez acquis un ExchangeService object named service. Le recurrenceMasterId
paramètre est un identificateur associé au maître périodique pour l’occurrence à modifier.
public static ItemId ModifyARecurringSeries(ExchangeService service, ItemId recurrenceMasterId)
{
Appointment calendarItem = Appointment.Bind(service, recurrenceMasterId, new PropertySet(AppointmentSchema.AppointmentType));
Appointment recurrMaster = new Appointment(service);
if (calendarItem.AppointmentType == AppointmentType.RecurringMaster)
{
// Get the recurring master from an occurrence in a recurring series with the properties you need.
recurrMaster = Appointment.Bind(service,
recurrenceMasterId,
new PropertySet(AppointmentSchema.AppointmentType,
AppointmentSchema.Subject,
AppointmentSchema.FirstOccurrence,
AppointmentSchema.LastOccurrence,
AppointmentSchema.ModifiedOccurrences,
AppointmentSchema.DeletedOccurrences));
}
else
{
Console.WriteLine("Item id was not for a recurring master.");
return recurrenceMasterId;
}
// Bind to the second occurrence in the series with the properties to modify.
Appointment occurrenceToModify = Appointment.BindToOccurrence(service,
recurrMaster.Id,
2,
new PropertySet(AppointmentSchema.Location,
AppointmentSchema.Start,
AppointmentSchema.End,
AppointmentSchema.RequiredAttendees,
AppointmentSchema.Subject));
// Update the properties you want to change.
occurrenceToModify.Location = "Helipad of Contoso Bldg 1";
occurrenceToModify.Start = occurrenceToModify.Start.AddDays(1);
occurrenceToModify.End = occurrenceToModify.End.AddDays(1);
occurrenceToModify.RequiredAttendees.Add("Contoso CEO", "sadie@contoso");
occurrenceToModify.RequiredAttendees.Add("Contoso Head of Research", "ronnie@contoso.com");
occurrenceToModify.RequiredAttendees.Add("Contoso Head of Security", "alfred@contoso.com");
occurrenceToModify.Subject = occurrenceToModify.Subject.ToString() + ":Mandatory";
// Update the occurrence in your calendar folder and send meeting update requests to attendees.
// This method call results in an UpdateItem request to EWS.
occurrenceToModify.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy);
// View updated and deleted occurrences on the recurring master prior to retrieving updated information.
Console.WriteLine("Modified Occurrences prior to updating recurring master: {0}",
(recurrMaster.ModifiedOccurrences == null ? "None" : recurrMaster.ModifiedOccurrences.Count.ToString()));
// Update the recurring master to view the modified and deleted occurrences.
recurrMaster = Appointment.Bind(service, recurrenceMasterId, new PropertySet(AppointmentSchema.ModifiedOccurrences,
AppointmentSchema.DeletedOccurrences));
// View updated and deleted occurrences on the recurring master after retrieving updated information.
Console.WriteLine("Modified Occurrences after updating recurring master:\t {0}",
(recurrMaster.ModifiedOccurrences == null ? "None" : recurrMaster.ModifiedOccurrences.Count.ToString()));
return recurrMaster.Id;
}
Modifier une occurrence unique dans une série à l’aide d’EWS
La modification d’une instance unique dans une série revient essentiellement à modifier un rendez-vous d’instance unique. Vous pouvez spécifier l’occurrence à modifier à l’aide d’un élément ItemId ou OccurrenceItemId .
L’exemple suivant montre le code XML de demande lorsque vous utilisez l’opération UpdateItem pour mettre à jour une occurrence dans une série périodique de rendez-vous. ItemId et ChangeKey sont raccourcis pour plus de lisibilité.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010" />
</soap:Header>
<soap:Body>
<m:UpdateItem ConflictResolution="AlwaysOverwrite" SendMeetingInvitationsOrCancellations="SendToAllAndSaveCopy">
<m:ItemChanges>
<t:ItemChange>
<t:ItemId Id="AAMkA" ChangeKey="DwAAAB" />
<t:Updates>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:Location" />
<t:CalendarItem>
<t:Location>Helipad of Contoso Bldg 1</t:Location>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:Start" />
<t:CalendarItem>
<t:Start>2014-03-27T19:33:00.000-07:00</t:Start>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:End" />
<t:CalendarItem>
<t:End>2014-03-27T20:33:00.000-07:00</t:End>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:RequiredAttendees" />
<t:CalendarItem>
<t:RequiredAttendees>
<t:Attendee>
<t:Mailbox>
<t:Name>Mack@contoso.com</t:Name>
<t:EmailAddress>Mack@contoso.com</t:EmailAddress>
<t:RoutingType>SMTP</t:RoutingType>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:Name>Sadie@contoso.com</t:Name>
<t:EmailAddress>Sadie@contoso.com</t:EmailAddress>
<t:RoutingType>SMTP</t:RoutingType>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:Name>Magdalena@contoso.com</t:Name>
<t:EmailAddress>Magdalena@contoso.com</t:EmailAddress>
<t:RoutingType>SMTP</t:RoutingType>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:Name>Contoso CEO</t:Name>
<t:EmailAddress>sadie@contoso</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:Name>Contoso Head of Research</t:Name>
<t:EmailAddress>ronnie@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:Name>Contoso Head of Security</t:Name>
<t:EmailAddress>alfred@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
</t:RequiredAttendees>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="item:Subject" />
<t:CalendarItem>
<t:Subject>Weekly Update Meeting:Mandatory</t:Subject>
</t:CalendarItem>
</t:SetItemField>
</t:Updates>
</t:ItemChange>
</m:ItemChanges>
</m:UpdateItem>
</soap:Body>
</soap:Envelope>
Le serveur répond à la requête UpdateItem avec un message UpdateItemResponse qui inclut la valeur ResponseCodeNoError, qui indique que l’occurrence a été correctement mise à jour, et l’ItemId du rendez-vous mis à jour.