7

Estoy intentando usar los Servicios web de Exchange para acceder a los datos del calendario, pero parece que no puedo entender cómo acceder a los calendarios compartidos por otros usuarios cuando no es su calendario predeterminado. Asumiendo que otro usuario en mi compañía creó un calendario compartido y lo compartió conmigo, ni siquiera puedo encontrar la carpeta del calendario, y mucho menos obtener los elementos dentro de ella.EWS: Acceda a los calendarios compartidos

Las respuestas pueden ser en términos de la API administrada EWS (versión 1.0 o 1.1), los objetos de servicio directamente, o incluso solo el cuerpo XML del mensaje SOAP que debe enviarse al servidor. Solo necesito algún tipo de punto de partida. Cualquier ayuda sería muy apreciada.

Respuesta

3

Esto es bastante complicado, porque necesita el FolderId de la carpeta en cuestión. Además del acceso a la carpeta del calendario, necesitará acceso de lectura a la carpeta raíz del buzón. Esto le permite ejecutar una operación FindFolder para recuperar esa identificación.

+4

No veo por qué sería necesario. Olvidándome de EWS, si no tengo acceso de lectura a la carpeta raíz de otro empleado, pero crean una carpeta compartida y la comparten conmigo a través de Outlook, puedo verla. ¿Compartir la carpeta automáticamente me da acceso de lectura a su carpeta raíz? Si no, ¿por qué Outlook podría ver el calendario compartido pero no EWS? –

7

He aquí cómo me las arreglé para hacerlo:

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 

Nota: esto sólo funciona para el calendario predeterminado ya que es todo lo que necesitaba para mis necesidades

Editar: Para los calendarios no predeterminados, tiene examinó el método ExchangeService.FindFolders, no lo he intentado, pero es posible que esto no requiera el acceso al buzón de entrada.

+1

Gracias Seph, pero como indiqué en mi pregunta, necesito acceder a un calendario compartido no predeterminado. –

+1

He editado mi respuesta para ver si eso ayuda, otra opción es hacer que tus usuarios suscriban sus calendarios compartidos automáticamente (por lo que en el lado del usuario le dices a tu servidor qué es la carpetaID para este usuario), esto no requeriría que tengas acceso a la raíz al buzón – Seph

+0

¿Qué permisos/función necesita la cuenta ExchangeService.Credentials? – Brent

1

Sé que es un par de años después de la publicación original, pero solo para ayudar a las personas con problemas similares, mira this.

Utiliza el WellKnownFolderName.PublicFoldersRoot de la API de EWS para acceder a la carpeta pública y navega a la subcarpeta solicitada utilizando FolderId.

Cuestiones relacionadas