Supprimer des rendez-vous dans une série périodique à l’aide d’EWS dans Exchange
Découvrez comment supprimer 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 supprimer une série de rendez-vous ou de réunions, ou une seule instance de la série. Le processus que vous utilisez pour supprimer une série entière est essentiellement le même que le processus que vous utilisez pour supprimer une seule occurrence. Vous utilisez les mêmes méthodes d’API managée EWS ou les mêmes opérations EWS que vous utilisez pour supprimer un rendez-vous ou une réunion d’instance unique. La différence réside dans l’ID d’élément inclus dans la méthode ou l’opération. Commençons par examiner comment les deux scénarios sont identiques.
Pour supprimer une série périodique ou une occurrence unique dans une série périodique, vous devez rechercher l’occurrence ou la série à supprimer, puis appeler la méthode ou l’opération appropriée pour la supprimer. Bien que vous puissiez simplement supprimer n’importe quel type de rendez-vous, nous vous recommandons de tenir à jour les participants ou l’organisateur et d’annuler les réunions que l’utilisateur a organisées et de refuser les réunions que l’utilisateur n’a pas organisées.
En quoi les scénarios sont-ils différents ? Il s’agit de l’objet Appointment utilisé pour appeler la méthode (pour l’API managée EWS) ou l’ID d’élément inclus dans la demande d’opération (pour EWS). Pour supprimer une série entière, vous avez besoin de l’objet Appointment ou de l’ID d’élément pour la forme de base périodique. Pour supprimer une seule occurrence, vous avez besoin de l’objet Appointment ou de l’ID d’élément pour l’occurrence.
Supprimer un rendez-vous périodique à l’aide de l’API managée EWS
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 paramètre recurringItem est un objet Appointment pour le maître récurrent ou une occurrence unique. Le paramètre deleteEntireSeries indique s’il faut supprimer la série entière dont fait partie l’objet recurringItem .
public static bool DeleteRecurringItem(ExchangeService service, Appointment recurringItem, bool deleteEntireSeries)
{
Appointment appointmentToDelete = null;
// If the item is a single appointment, fail.
if (recurringItem.AppointmentType == AppointmentType.Single)
{
Console.WriteLine("ERROR: The item to delete is not part of a recurring series.");
return false;
}
// Check the Appointment that was passed. Is it
// an occurrence or the recurring master?
if (recurringItem.AppointmentType == AppointmentType.RecurringMaster)
{
if (!deleteEntireSeries)
{
// The item is the recurring master, so deleting it will delete
// the entire series. The caller indicated that the entire series
// should not be deleted, so fail.
Console.WriteLine("ERROR: The item to delete is the recurring master of the series. Deleting it will delete the entire series.");
return false;
}
else
{
appointmentToDelete = recurringItem;
}
}
else
{
if (deleteEntireSeries)
{
// The item passed is not the recurring master, but the caller
// wants to delete the entire series. Bind to the recurring
// master to delete it.
try
{
appointmentToDelete = Appointment.BindToRecurringMaster(service, recurringItem.Id);
}
catch (Exception ex)
{
Console.WriteLine("ERROR: {0}", ex.Message);
return false;
}
}
else
{
// The item passed is not the recurring master, but the caller
// only wants to delete the occurrence, so just
// delete the passed item.
appointmentToDelete = recurringItem;
}
}
if (appointmentToDelete != null)
{
// Remove the item, depending on the scenario.
if (appointmentToDelete.IsMeeting)
{
CalendarActionResults results;
// If it's a meeting and the user is the organizer, cancel it.
// Determine this by testing the AppointmentState bitmask for
// the presence of the second bit. This bit indicates that the appointment
// was received, which means that someone sent it to the user. Therefore,
// they're not the organizer.
int isReceived = 2;
if ((appointmentToDelete.AppointmentState & isReceived) == 0)
{
results = appointmentToDelete.CancelMeeting("Cancelling this meeting.");
return true;
}
// If it's a meeting and the user is not the organizer, decline it.
else
{
results = appointmentToDelete.Decline(true);
return true;
}
}
else
{
// The item isn't a meeting, so just delete it.
appointmentToDelete.Delete(DeleteMode.MoveToDeletedItems);
return true;
}
}
return false;
}
Pour utiliser cet exemple, vous devez établir une liaison à une occurrence ou à la forme de base périodique, puis passer l’objet Appointment obtenu à la méthode . N’oubliez pas que si vous accédez à des rendez-vous à l’aide d’une classe CalendarView , les éléments résultants sont tous des occurrences uniques. À l’inverse, si vous utilisez la classe ItemView , les éléments résultants sont tous des maîtres récurrents.
Supprimer un rendez-vous périodique à l’aide d’EWS
La suppression d’une série périodique à l’aide d’EWS est identique à la suppression d’une réunion à instance unique. En fait, les requêtes SOAP prennent le même format. Là encore, la clé est l’ID d’élément utilisé dans la requête. Si l’ID d’élément correspond au maître récurrent, la série entière est supprimée. Si l’ID d’élément correspond à une seule occurrence, seule cette occurrence est supprimée.
Remarque
Dans les exemples de code qui suivent, les attributs ItemId, ChangeKey et RecurringMasterId sont raccourcis pour plus de lisibilité.
Cet exemple utilise l’opération CreateItem avec un élément CancelCalendarItem pour annuler une réunion dont l’utilisateur est l’organisateur. La valeur de l’élément ReferenceItemId indique l’élément à annuler et peut être l’ID d’élément d’une forme de base périodique ou d’une occurrence unique.
<?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="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Eastern Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:CreateItem MessageDisposition="SendAndSaveCopy">
<m:Items>
<t:CancelCalendarItem>
<t:ReferenceItemId Id="AAMkADA5..." ChangeKey="DwAAABYA..." />
<t:NewBodyContent BodyType="HTML">Cancelling this meeting.</t:NewBodyContent>
</t:CancelCalendarItem>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>
Cet exemple utilise l’opération CreateItem avec un élément DeclineItem pour refuser une réunion dont l’utilisateur n’est pas l’organisateur. Comme dans l’exemple précédent, la valeur de l’élément ReferenceItemId indique l’élément à refuser, et peut être l’ID d’élément d’une forme de base périodique ou d’une occurrence unique.
<?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="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Eastern Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:CreateItem MessageDisposition="SendAndSaveCopy">
<m:Items>
<t:DeclineItem>
<t:ReferenceItemId Id="AAMkADA6..." ChangeKey="DwAAABYA..." />
</t:DeclineItem>
</m:Items>
</m:CreateItem>
</soap:Body>
</soap:Envelope>
Cet exemple utilise l’opération DeleteItem pour supprimer une seule occurrence d’un rendez-vous sans participants. L’occurrence à supprimer est spécifiée par l’élément OccurrenceItemId , qui est construit à partir de l’ID d’élément du maître périodique et de l’index de l’occurrence.
<?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="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Eastern Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:DeleteItem DeleteType="MoveToDeletedItems" SendMeetingCancellations="SendToAllAndSaveCopy">
<m:ItemIds>
<t:OccurrenceItemId RecurringMasterId="AAMkADA8..." InstanceIndex="3" />
</m:ItemIds>
</m:DeleteItem>
</soap:Body>
</soap:Envelope>
Notez que vous pouvez obtenir le même résultat en remplaçant l’élément OccurrenceItemId par un élément ItemId qui contient l’ID d’élément de l’occurrence, comme indiqué.
<m:ItemIds>
<t:ItemId Id="AAMkADA7..." ChangeKey="DwAAABYA..." />
</m:ItemIds>
Voir aussi
- Périodicités et EWS
- Accéder à une série périodique à l’aide d’EWS dans Exchange
- Créer une série périodique à l’aide d’EWS dans Exchange
- Mettre à jour une série périodique à l’aide d’EWS
- Mettre à jour une série périodique à l’aide d’EWS dans Exchange
- Calendriers et EWS dans Exchange
- Créer des rendez-vous et des réunions à l’aide d’EWS dans Exchange 2013
- Supprimer des rendez-vous et annuler des réunions à l'aide d’EWS dans Exchange