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