Hallo AutoITer!
Wie in der Themabezeichnung geschrieben, möchte ich gerne von einem Kalender (Outlook 2010) Daten innerhalb eines bestimmten Zeitraums in einen anderen Kalender kopieren.
Dazu habe ich mir die OutlookUDF (Ver. 1.3.4.1) heruntergeladen und ein Programm zusammengestellt.
Dabei kommt es bei der Ausführung zu folgenden Problemen.
1.) Ich habe eine Abfrage des Zielordners (Kalender) eingebaut. Führe ich das Script aus dem SciTE aus funktioniert es mit einem Zeitraum >= einem Jahr, ich erhalte keine Fehlermeldung.
Gebe ich den gleichen Zeitraum ein und starte das Script als compilierte EXE erhalte ich von meiner Ordnerabfrage einen Fehler!?
2.)Verwende ich einen langen Zeitraum kommt es sehr oft vor, dass beim Auslesen der Kalenderdaten nicht alle Felder eingelesen werden.
Darunter die für mein Script notwendige EntryId.
3.)Selbst wenn es scheint das alles funktioniert werden keine Kalendereinträge kopiert. (keine Fehlermeldung)
Kennt jemand diese Probleme und weiß eine Lösung?
Ich habe den Verdacht, das die OutlookEx UDF nicht stabil funktioniert.
Spoiler anzeigen
#include <OutlookEx.au3>
#include <Array.au3>
#include <Date.au3>
$oOL = _OL_Open()
Global $sStart = "2018/01/01 00:01"
Global $sEnd = "2018/23/12 23:59"
Global $sQuellKalender = "*\Kalender"
Global $sZielKalender = "*\synctest"
Local $i
Local $ii
Local $aItems2
Local $aItems
Local $sInputStartDatum
Local $sInputEndDatum
Local $aConfig = IniReadSection(@ScriptDir & "\config.ini", "Einstellungen")
If @error Then
MsgBox(16, "", "Keine config.ini Datei vorhanden, es wird eine Beispiel Datei erzeugt." & @CR & "Nach klick auf Ok wird das Programm neu gestartet.")
IniWrite(@ScriptDir & "\config.ini", "Einstellungen", "StartDatum", _NowDate())
IniWrite(@ScriptDir & "\config.ini", "Einstellungen", "EndDatum", _DateTimeFormat(_DateAdd("h", 720, _NowCalc()), 2))
IniWrite(@ScriptDir & "\config.ini", "Einstellungen", "QuellKalender", @UserName & "\Kalender")
IniWrite(@ScriptDir & "\config.ini", "Einstellungen", "ZielKalender", @UserName & "\synctest")
If FileExists(@ScriptDir & "\config.ini") Then
Run(@ScriptDir & "\" & @ScriptName)
Else
MsgBox(16, "", "Die INI Datei konnte nicht erstellt werden." & @CR & "Das Programm wird beendet.")
EndIf
Exit
Else
$sQuellKalender = $aConfig[3][1]
$sZielKalender = $aConfig[4][1]
;_ArrayDisplay($aConfig)
EndIf
$sInputStartDatum = InputBox("Startdatum", "Bitte geben sie das Startdatum ein ab wann die Kalendereinträge kopiert werden sollen.", $aConfig[1][1], " M10")
If @error Then Exit
IniWrite(@ScriptDir & "\config.ini", "Einstellungen", "StartDatum", $sInputStartDatum)
$sInputStartDatum &= " 00:01"
$sStart = _DateTime($sInputStartDatum)
ConsoleWrite($sInputStartDatum & @CR)
$sInputEndDatum = InputBox("Enddatum", "Bitte geben sie das Enddatum ein bis zu dem die Kalendereinträge kopiert werden sollen.", $aConfig[2][1], " M10")
If @error Then Exit
IniWrite(@ScriptDir & "\config.ini", "Einstellungen", "EndDatum", $sInputEndDatum)
$sInputEndDatum &= " 23:59"
$sEnd = _DateTime($sInputEndDatum)
_OL_FolderAccess($oOL, $sQuellKalender)
If @error = 4 Then
MsgBox(16, "", "Der angegebene Ordner " & $sQuellKalender & " konnte nicht gefunden werden." & @CR & "Das Programm wird beendet.")
Exit
EndIf
$aItems = _OL_AppointmentGet($oOL, $sQuellKalender, $sStart, $sEnd)
If Not IsArray($aItems) Then
MsgBox(16, "Fehler", "Keine Kalendereinträge gefunden!", 30)
Exit
EndIf
_ArrayDisplay($aItems, $sQuellKalender)
_OL_FolderAccess($oOL, $sZielKalender)
If @error = 4 Then
MsgBox(16, "", "Der angegebene Ordner " & $sZielKalender & " konnte nicht gefunden werden." & @CR & "Das Programm wird beendet.")
Exit
EndIf
$aItems2 = _OL_AppointmentGet($oOL, $sZielKalender, $sStart, $sEnd)
If IsArray($aItems2) Then
For $i = UBound($aItems) - 1 To 0 Step -1
For $ii = 0 To UBound($aItems2) - 1
If $aItems[$i][3] & $aItems[$i][4] & $aItems[$i][5] = $aItems2[$ii][3] & $aItems2[$ii][4] & $aItems2[$ii][5] Then
ConsoleWrite($aItems[$i][3] & $aItems[$i][4] & $aItems[$i][5] & " - " & $aItems2[$ii][3] & $aItems2[$ii][4] & $aItems2[$ii][5] & @CR)
_ArrayDelete($aItems, $i)
ExitLoop
EndIf
Next
Next
EndIf
_ArrayDisplay($aItems, "Kalendereinträge die in den Zielkalender" & $sZielKalender & " kopiert werden.")
For $i = 0 To UBound($aItems) - 1
_OL_ItemCopy($oOL, $aItems[$i][0], "", $sZielKalender)
If @error Then
ConsoleWrite("Fehler: " & @error & " erweiterter Fehler: " & @extended)
EndIf
Next
Func _DateTime($_sDateTime)
Return StringFormat("%4d/%02d/%02d %02d:%02d", StringMid($_sDateTime, 7, 4), StringLeft($_sDateTime, 2), StringMid($_sDateTime, 4, 2), StringMid($_sDateTime, 12, 2), StringRight($_sDateTime, 2))
EndFunc ;==>_DateTime
Alles anzeigen