Aktualisieren einer Serie mit EWS
Erfahren Sie, wie Sie Termine in einer Serie mithilfe der verwalteten EWS-API oder EWS in Exchange ändern.
Sie können die verwaltete EWS-API oder EWS verwenden, um eine Serie zu aktualisieren, indem Sie entweder die gesamte Reihe oder ein einzelnes Vorkommen aktualisieren. In diesem Artikel wird erläutert, wie ein einzelnes Vorkommen aktualisiert wird.
Das Ändern eines einzelnen Termins in einer Reihe ähnelt dem Ändern eines Einzelinstanztermins. Sie verwenden dieselben Methoden und Vorgänge, aber Sie verwenden die Element-ID des Vorkommens, das Sie ändern möchten.
Wenn Sie ein einzelnes Vorkommen in einer Reihe ändern, wird dieses Vorkommen einem Array geänderter Termine hinzugefügt, das dem wiederkehrenden Master für die Reihe zugeordnet ist. Sie können die eigenschaft Appointment.ModifiedOccurrences EWS Managed API oder das ModifiedOccurrences EWS-Element verwenden, um auf alle Termine in einer Reihe zuzugreifen, die geändert wurden.
Ändern eines einzelnen Vorkommens in einer Reihe mithilfe der verwalteten EWS-API
Binden Sie an das Vorkommen, das Sie ändern möchten, indem Sie entweder die Appointment.BindToOccurrence-Methode mit dem Indexwert des Elements oder die Appointment.Bind-Methode mit der ID des Vorkommens verwenden. Sie erhalten diese ID entweder aus der Id-Eigenschaft eines Appointment-Objekts , das dem Vorkommen entspricht, oder aus der ItemId-Eigenschaft des OccurrenceInfo-Objekts , das dem Vorkommen entspricht.
Aktualisieren Sie die Eigenschaften für das Appointment-Objekt des Vorkommens.
Speichern Sie die Änderungen am Terminobjekt des Vorkommens mithilfe der Appointment.Save-Methode .
Im folgenden Beispiel wird ein Termin in einer Serie aktualisiert und überprüft, ob der geänderte Termin auf dem wiederkehrenden Master aktualisiert wird. In diesem Beispiel wird davon ausgegangen, das Sie sich an einem Exchange-Server angemeldet haben und das ExchangeService-Objekt service erhalten haben. Der recurrenceMasterId
Parameter ist ein Bezeichner, der dem wiederkehrenden Master für das zu ändernde Vorkommen zugeordnet ist.
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;
}
Ändern eines einzelnen Vorkommens in einer Reihe mithilfe von EWS
Das Ändern einer einzelnen Instanz in einer Reihe entspricht im Wesentlichen dem Ändern eines Einzelinstanztermins. Sie können das zu ändernde Vorkommen angeben, indem Sie entweder ein ItemId - oder ein OccurrenceItemId-Element verwenden.
Das folgende Beispiel zeigt die Anforderungs-XML, wenn Sie den UpdateItem-Vorgang verwenden, um ein Vorkommen in einer Terminserie zu aktualisieren. ItemId und ChangeKey werden aus Gründen der Lesbarkeit gekürzt.
<?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>
Der Server antwortet auf die UpdateItem-Anforderung mit einer UpdateItemResponse-Nachricht , die den ResponseCode-WertNoError enthält, der angibt, dass das Vorkommen erfolgreich aktualisiert wurde, und der ItemId des aktualisierten Termins.