J'essaie d'utiliser les services Web Exchange pour accéder aux données du calendrier, mais je n'arrive pas à comprendre comment accéder aux calendriers qui ont été partagés par d'autres utilisateurs lorsque ce n'est pas leur calendrier par défaut. En supposant qu'un autre utilisateur de mon entreprise ait créé un calendrier partagé et l'ait partagé avec moi, je ne peux même pas trouver le dossier du calendrier, et encore moins récupérer les éléments qu'il contient. Les réponses peuvent être en termes d'EWS Managed API (version 1.0 ou 1.1), les objets de service directement, ou même juste le corps XML du message SOAP qui doit être envoyé au serveur. J'ai juste besoin d'une sorte de point de départ. Toute aide serait grandement appréciée.EWS: Accéder aux calendriers partagés
Répondre
Ceci est plutôt compliqué, car vous avez besoin de l'ID de dossier du dossier en question. En plus de l'accès au dossier du calendrier, vous aurez besoin d'un accès en lecture au dossier racine de la boîte aux lettres. Cela vous permet d'exécuter une opération FindFolder pour récupérer cet identifiant.
Voici comment j'ai réussi à le faire:
Dim _cal As New Microsoft.Exchange.WebServices.Data.FolderId(Microsoft.Exchange.WebServices.Data.WellKnownFolderName.Calendar, New Microsoft.Exchange.WebServices.Data.Mailbox(_otherAddress))
Dim _calendarView As New Microsoft.Exchange.WebServices.Data.CalendarView(_startTime.Date, _endTime.Date.AddDays(1))
For Each appointmentItem As Microsoft.Exchange.WebServices.Data.Appointment In _
service.FindAppointments(_
_cal, _
_calendarView)
Next
Note: ceci ne fonctionne que pour le calendrier par défaut car c'est tout ce que je avais besoin pour mes besoins
Edit: Pour les calendriers non par défaut, ont vous avez regardé dans la méthode ExchangeService.FindFolders, je n'ai pas essayé, mais cela ne nécessite pas l'accès à la boîte de réception root.
Merci Seph, mais comme je l'ai dit dans ma question, j'ai besoin d'accéder à un calendrier partagé par défaut. –
J'ai édité ma réponse voir si cela aide, une autre option est d'avoir vos utilisateurs souscrivent automatiquement leurs calendriers partagés (du côté des utilisateurs, vous dites à votre serveur ce que folderId est pour cet utilisateur), cela ne nécessite pas d'accès root à la boîte aux lettres – Seph
De quelles autorisations/rôle le compte ExchangeService.Credentials a-t-il besoin? – Brent
Je sais que c'est quelques années après le post original, mais juste pour aider les personnes ayant des problèmes similaires, regardez this.
Il utilise WellKnownFolderName.PublicFoldersRoot de l'API EWS pour accéder au dossier public et navigue jusqu'au sous-dossier demandé à l'aide de FolderId.
Si vous avez besoin de faire cela en Java, voici une réponse qui pourrait vous aider. Office365 API - Admin accessing another users/room's calendar events. Il a un exemple de code de travail. Jusqu'à ce que MS fasse fonctionner l'API REST Azure V2.0, c'est la manière de le faire.
Je ne vois pas pourquoi cela serait nécessaire. En oubliant le serveur EWS, si je n'ai pas accès en lecture au dossier racine d'un autre employé, mais qu'il crée un dossier partagé et le partage avec moi via Outlook, je peux le voir. Est-ce que le fait de partager le dossier me donne automatiquement un accès en lecture à leur dossier racine? Si non, pourquoi Outlook pourrait-il voir le calendrier partagé mais pas EWS? –