7

Ich versuche Exchange Web Services zu verwenden, um auf Kalenderdaten zuzugreifen, aber ich kann nicht herausfinden, wie auf Kalender zugegriffen wird, die von anderen Benutzern freigegeben werden, wenn es nicht ihr Standardkalender ist. Angenommen, ein anderer Benutzer in meinem Unternehmen hat einen freigegebenen Kalender erstellt und mit mir geteilt, kann ich nicht einmal den Kalenderordner finden, geschweige denn die darin enthaltenen Elemente abrufen.EWS: Zugriff auf freigegebene Kalender

Die Antworten können sich auf die EWS Managed API (Version 1.0 oder 1.1), die Serviceobjekte direkt oder auch nur den XML-Text der SOAP-Nachricht beziehen, die an den Server gesendet werden muss. Ich brauche nur einen Ausgangspunkt. Jede Hilfe würde sehr geschätzt werden.

Antwort

3

Dies ist ziemlich kompliziert, weil Sie die FolderId des fraglichen Ordners benötigen. Neben dem Zugriff auf den Kalenderordner benötigen Sie Lesezugriff auf den Stammordner des Postfachs. Auf diese Weise können Sie eine FindFolder-Operation ausführen, um diese ID abzurufen.

+4

Ich sehe nicht, warum das notwendig wäre. Wenn ich EWS vergesse, wenn ich keinen Lesezugriff auf den Stammordner eines anderen Mitarbeiters habe, aber einen freigegebenen Ordner erstelle und über Outlook mit mir teile, kann ich es sehen. Teilen sie den Ordner automatisch mit Lesezugriff auf ihren Stammordner? Wenn nicht, warum könnte Outlook den freigegebenen Kalender, aber nicht EWS anzeigen? –

7

Hier ist, wie ich es geschafft, es zu tun:

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 

Hinweis: dies funktioniert nur für die Standard-Kalender als dass alles, was ich für meine Anforderungen

Bearbeiten erforderlich ist: Für Nicht-Standard-Kalender haben Sie haben in die ExchangeService.FindFolders-Methode geschaut, ich habe es nicht versucht, aber dies erfordert möglicherweise keinen Root-Posteingang.

+1

Dank Seph, aber wie ich in meiner Frage angegeben habe, brauche ich Zugriff auf einen gemeinsamen Nicht-Standard-Kalender. –

+1

Ich habe meine Antwort bearbeitet, um zu sehen, ob das hilft, eine weitere Option ist, dass Ihre Benutzer ihre freigegebenen Kalender automatisch abonnieren (also auf der Benutzerseite dem Server mitteilen, was die Ordner-ID für diesen Benutzer ist), dies würde keinen Root-Zugriff erfordern an das Postfach – Seph

+0

Welche Berechtigungen/Rolle benötigt das Konto ExchangeService.Credentials? – Brent

1

Ich weiß, es ist ein paar Jahre nach dem ursprünglichen Beitrag, aber nur um Menschen mit ähnlichen Problemen zu helfen, schauen Sie sich this.

Es verwendet den WellKnownFolderName.PublicFoldersRoot der EWS-API, um auf den Öffentlichen Ordner zuzugreifen, und blättert mithilfe von FolderId zum angeforderten Unterordner.