Hallo 123
Auslesen von Outlook-Serien-Terminen (bei den Privaten Terminen klemmt noch etwas und 
zudem habe ich noch ein Problem beim auslesen des Nachrichteninhalts.
Es funktionieren:
- Fremdkonto
- Serientermine
- Begrenzung des anzuzeigenden Zeitraumes
Code: Alles auswählen
 
IncludeFile "COMatePLUS.pbi"
Global Outlook.COMateObject, NameSpace.COMateObject 
Global Items.COMateObject, Termin.COMateObject
Global Kalender.COMateObject, Folder.COMateObject
Global NewItems.COMateObject
Global vUserid.s, vFilter.s, DatumVon.s, DatumBis.s, vDatum.s
Global vInterval.COMateObject, vFreeBusy.COMateObject, objRecipient.COMateObject
Outlook = COMate_CreateObject("Outlook.Application")
If Outlook
  
   NameSpace = Outlook\GetObjectProperty("GetNamespace('MAPI')")
   If NameSpace
     
      ; Default-Folder     
      ;Folder = NameSpace\GetObjectProperty("GetDefaultFolder(9)")
     
      ; Calendar from another User / e-mail-Address
      vUserid = "U123456" ; Userid
      ;vUserid = "email@mail.com" ; e-Mail
      Kalender = NameSpace\GetObjectProperty("CreateRecipient('" + vUserid + "')") 
      
      ; Private Termine des fremden Users anzeigen / Private Appointments
      ; https://docs.microsoft.com/en-us/office/vba/api/outlook.recipient.freebusy
      ; myFBInfo = myRecipient.FreeBusy(#11/11/2003#, 60 * 24) 
      ; Suchen der privaten Termine von heute (falls vorhanden)
      ; LET vStartTime = Dat_Heute_Form + " 00:00"
      ; 1 Minuten
      ; LET vInterval  = 1
      ; SET objRecipient = vKalender
      ; Generiert die Ansicht von 4 Wochen = 28 Tagen x (24 Std x 60 Min = 1440) = String mit 40320 Zeichen (0-4) = Minuten-Einheiten
      ; OBJECT CALL objRecipient.FreeBusy(vStartTime, vInterval) To vFreeBusy
      ; 0 olFree             The user is available.
      ; 1 olTentative        The user has a tentative appointment scheduled.
      ; 2 olBusy             The user is busy.
      ; 3 olOutOfOffice      The user is out of office.
      ; 4 olWorkingElsewhere The user is working in a location away from the office.
      ; Probleme mit dem Zugriff auf die FreeBusy-Information:
      ; https://support.microsoft.com/en-us/topic/how-to-troubleshoot-free-busy-issues-in-a-hybrid-deployment-of-on-premises-exchange-server-and-exchange-online-in-office-365-ae03e199-b439-a84f-8db6-11bc0d7fbdf0
      ; https://manuals.gfi.com/en/kerio/connect/content/email-clients/kerio-outlook-connector/outlook-free-busy-service-always-returns-no-information-297.html
;       vInterval = 1 ; Einen Monat (= 4 Wochen! fix!) in 1-Minuten-Einheiten anzeigen
;       vDatum = "22.09.2021 00:00" 
;       objRecipient = Kalender
;       MessageRequester("", "Kalender-Objekt = " + Str(objRecipient))
; 
;       Debug "Start  = " + objRecipient\GetObjectProperty("FreeBusy('" + vDatum + "',1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy('" + vDatum + "',1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy('" + Chr(34) + vDatum + Chr(34) + "',1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy(" + Chr(34) + vDatum + Chr(34) + ",1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy('22.09.2021 00:00',1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy(" + Chr(34) + "22.09.2021 00:00" + Chr(34) + ",1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy(#22.09.2021 00:00#,1)") + " Ende" 
;       
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy($002722.09.2021 00:00$0027,1)") + " Ende"
;       Debug "Start  = " + objRecipient\GetStringProperty("FreeBusy('22.09.2021 00:00',1)") + " Ende"
;       
;       Debug "Start  = " + Kalender\GetStringProperty("FreeBusy(#01/01/2021#,1)") + " Ende"
;       Debug "Start  = " + Kalender\GetStringProperty("FreeBusy('#01/01/2021#',1)") + " Ende"
;       
      
      
      Folder = NameSpace\GetObjectProperty("GetSharedDefaultFolder(" + Kalender + " AS COMateObject, 9)")
      
      If Folder
         Items = Folder\GetObjectProperty("Items")
         
         ; Termin-Serien aufbereiten für die Ausgabe
         Items\SetProperty("IncludeRecurrences=1")
         Items\GetObjectProperty("Sort('[START]')")
         
         DatumVon = "20.09.2021"
         DatumBis = "31.12.2021"
         ;DatumBis = "30.09.2021"
         vFilter = "[START] >= $0027" + DatumVon + " 00:00$0027 And [START] <= $0027" + DatumBis + " 00:00$0027"
         NewItems = Items\GetObjectProperty("Restrict('" + vFilter + "')")
         
         ;NewItems\GetObjectProperty("Sort('[START]')")
         ; Zeigt viel zuviele Elemente an!! -> "x" ist für For-Next unbrauchbar!
         x = NewItems\GetIntegerProperty("Count")
         ;MessageRequester("", "Anzahl Elemente = " + Str(x))
         
         If NewItems
          ;For i = 1 To x ; funktioniert nicht!
          For i = 1 To i+1
          Termin = NewItems\GetObjectProperty("Item("+Str(i)+")" )
          
          ;apptOrganizer = Termin\GetObjectProperty("Body" )
          ;MessageRequester("", "apptOrganizer = " + Str(apptOrganizer))
          
          ; addAsync(recipients: (string | EmailUser | EmailAddressDetails)[], 
          ; options: Office.AsyncContextOptions, callback?: (asyncResult: Office.AsyncResult<void>) => void): void;
          ; https://docs.microsoft.com/en-us/javascript/api/outlook/office.recipients?view=outlook-js-preview
          ; https://docs.microsoft.com/en-us/javascript/api/outlook/office.appointmentcompose?view=outlook-js-preview
          
          If Termin
             
             Debug  Termin\GetStringProperty("Start") + " bis " +
                    Termin\GetStringProperty("End") + " Uhr " +
                    Termin\GetStringProperty("Subject") + ", " + 
                    Termin\GetStringProperty("Location") + ", " + ; Bis hier funktioniert alles wie gewünscht!
                   
                    Termin\GetStringProperty("Body") + ", " +     ; Ab hier keine Daten mehr!? -> Mailinhalt / Details -> anderer Level?
                    ;Termin\GetStringProperty("emailAddress") + ", " +
                    ;Termin\GetStringProperty("RequiredAttendees") + ", " +
                    ;Termin\GetStringProperty("organizerAddress") + ", " +
                    ;apptOrganizer\GetStringProperty("displayName")
                    Termin\GetStringProperty("Recipients")
          Else
             Break
          EndIf 
          Next
       If Termin   : Termin\Release()  : EndIf
       If Items    : Items\Release()    : EndIf
       If Folder   : Folder\Release()   : EndIf
       If NameSpace: NameSpace\Release(): EndIf
       If Outlook  : Outlook\Release()  : EndIf
       EndIf
    EndIf
  EndIf
EndIf
Gruss Bernie