Lesen Sie Outlook-Ereignisse über Python
Outlook hat einige Dinge zu wünschen, wie zeigt mehrere Monatsansicht
Also beschloss ich, es zu versuchen, indem Sie sich die event-Daten per python (und dann einen Weg finden, um es anzuzeigen nett). Google gibt mir pore Ergebnisse, aber stackoverflow sehr hilfreich gewesen, die zuvor in Bezug auf die Verwendung win32com und outlook.
Meine Ziele sind die folgenden
- Lesen Sie einen freigegebenen Kalender
- Lesen Sie die Ereignisse mit Informationen wie Beginn, Ende, Betreff, Herstellerin etc.
Habe ich noch nicht weit, aber das ist, was ich bekam, zusammen (mit inspiration von diese Website)
import win32com.client, datetime
from dateutil.relativedelta import relativedelta
Outlook = win32com.client.Dispatch("Outlook.Application")
ns = Outlook.GetNamespace("MAPI")
appointments = namespace.GetDefaultFolder(9).Items
# TODO: Need to figure out howto get the shared calendar instead Default [9]
# (I have placed the shared folder into a separate folder - don't know if it matters)
# I would just like the user to select which calendar to execute on
appointments.Sort("[Start]")
appointments.IncludeRecurrences = "True"
begin = date.today().strftime("%m%d%Y")
end = (date.today() + relativedelta( months = 3 )).strftime("%m%d%Y")
appointments = appointments.Restrict("[Start] >= '" +begin+ "' AND [END] >= '" +end+ "'")
Ab hier brauche ich Hilfe mit einer Schleife durch die Ereignisse vor und Lesen Sie Sie. Jede Hilfe wird sehr geschätzt.
- Meinst du
ns.GetDefaultFolder(9)
stattnamespace.
? Ich bekomme einen Fehler wenn ich versuche deinen code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Grunde alles, was Sie tun müssen, ist Folgen Sie der COM-API-Dokumentation von Microsoft. Zum Beispiel, die
Restrict()
Methode gibtAppointmentItem
Gegenstände, die dokumentiert unter AppointmentItem-Objekts für Outlook 2010. Also, ab mit einem Ordner, den Sie bekommen können und eine Liste der Termine wie folgt:Hinweis, dass ich eine etwas andere Zeit-format für die Beschränkung Ausdruck (
"%m/%d/%Y"
statt"%m%d%Y"
). Die richtige Lösung wäre das verwenden von OutlookFormat
- Funktion dokumentiert bei http://msdn.microsoft.com/en-us/library/office/ff869597(v=office.14).aspx, Abschnitt Datum. Beachten Sie auch, dass ich mit Python 3.3, so müssen Sie möglicherweise verschiedene Funktionen verwenden um die Daten zu erstellen. In jedem Fall, für Test-Zwecke, können Sie eine hart codierte Ausdruck wie"[Start] >= '02/03/2014' AND [End] <= '03/05/2014'"
Um einen freigegebenen Kalender, der folgende code sollte funktionieren - Dies ist die übliche Sequenz gefunden in der API-Dokumentation, aber ich war nicht in der Lage, tatsächlich zu bekommen, es funktioniert, aber dies könnte aufgrund einer unterschiedlichen backend-server (nicht mit einem Exchange-server):
Zeigt alle verfügbaren Ordner, wie ein Baum, die Sie verwenden können, so etwas wie
So suchen Sie einen Ordner, indem Sie den Pfad (z.B. finden Sie die Ordner "Kalender" "[email protected]" unter den "Internet-Kalender" - Ordner), die Sie verwenden können, so etwas wie
Siehe auch:
for ... in ...
.for folder in ns.Folders: print folder.Name
gibt mir "Internet-Kalender", "SharePoint-Listen" "[email protected]"