Скрипт для экспорта в гугль
Вот программа для экспорта календаря из Outlook в Google Calendar:
повторяющиеся события пока не обрабатываются.
повторяющиеся события пока не обрабатываются.
#!/usr/bin/python
# -*- encoding: cp1251 -*-
import win32com.client
import datetime,time
ns=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
appointments = ns.GetDefaultFolder(9).Items
appointments.Sort("[Start]")
#appointments.IncludeRecurrences = "True"
ical_start="""BEGIN:VCALENDAR
PRODID:outlook_conv.py
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Konstantin Dudkov
BEGIN:VTIMEZONE
TZID:Europe/Moscow
X-LIC-LOCATION:Europe/Moscow
BEGIN:DAYLIGHT
TZOFFSETFROM:+0300
TZOFFSETTO:+0400
TZNAME:MSD
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0400
TZOFFSETTO:+0300
TZNAME:MSK
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
"""
classes={0:"DEFAULT",1:"PRIVATE",2:"PRIVATE",3:"PRIVATE"}
def ansi_date(a,i=0):
if i==0:
return "%.4i%.2i%.2iT%.2i%.2i%.2i" % (a.year,a.month,a.day,a.hour,a.minute,a.second)
else:
return "%.4i%.2i%.2i" % (a.year,a.month,a.day)
print "%i appointments found\n" % len(appointments)
f=open('outlook.ics','w')
f.write(ical_start)
for item in appointments:
if item.IsRecurring: continue
f.write("BEGIN:VEVENT\n")
f.write("UID:%s\n" % item.EntryID)
if item.AllDayEvent: i=1
else: i=0
f.write("DTSTART;TZID=Europe/Moscow:%s\n" % ansi_date(item.Start,i))
f.write("DTEND;TZID=Europe/Moscow:%s\n" % ansi_date(item.End,i))
f.write("SUMMARY:%s\n" % item.Subject.encode('utf8'))
f.write("LOCATION:%s\n" % item.Location.encode('utf8'))
f.write("CLASS:%s\n" % classes[item.Sensitivity])
f.write("END:VEVENT\n")
pass
f.write('END:VCALENDAR')
f.close