Einen Outlook 2010-kompatiblen iCalendar (.ics) generieren

Nach einigem Üben habe ich es geschafft, einen iCalendar-Feed in Microsoft Outlook 2010 auf der Arbeit zu integrieren. Hier das finale Layout, welches keine Fehlermeldungen mehr produziert:

BEGIN:VCALENDAR
VERSION:2.0
X-WR-CALNAME:foursquare Check Ins
X-WR-TIMEZONE:Europe/Amsterdam
CALSCALE:GREGORIAN
PRODID:-//eMeidi.com//foursquare2ics 0.32//EN

BEGIN:VTIMEZONE
TZID:Mad
X-LIC-LOCATION:Europe/Amsterdam
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE

BEGIN:VEVENT
UID:5772a5d6498eef051c12ed37@domain.tld
DTSTART;TZID=Mad:20160628T182910
DTEND;TZID=Mad:20160628T183410
DTSTAMP:20160629T190304Z
SUMMARY:Bahnhof Bern
LOCATION:Bahnhof Bern
COMMENT:
END:VEVENT

BEGIN:VEVENT
UID:577297d6488e883164f01dd4@domain.tld
DTSTART;TZID=Mad:20160628T172926
DTEND;TZID=Mad:20160628T173426
DTSTAMP:20160629T190304Z
SUMMARY:Zürich Hauptbahnhof
LOCATION:Zürich Hauptbahnhof
COMMENT:
END:VEVENT

...

END:VCALENDAR

Wichtig war:

Die Definition einer eigenen Timezone zu Beginn des iCalendars (BEGIN:VTIMEZONE) („VTimezone: DAYLIGHT and STANDARD in the same timezone #317“ abgeschaut)

Das Hinzufügen dieser Timezone zu den DTSTART und DTEND-Werten (weil ich mich nicht mit der Umwandlung von Zeitwerten nach UTC herumschlagen wollte)

Das Hinzufügen des Wertes DTSTAMP mit Zeitwerten in der UTC-Zone (Hack: den Generierungszeitpunkt minus 3600 * 2) (Erläuterungen: What’s the difference between CREATED and DTSTAMP in the iCalendar format?)

Die Verschlankung der .ics-Datei auf unter 2MB (Vermutung), damit sie Google Calendar einliest und anzeigt (gemäss Re: Import file size limit for .ics resp. Fix problems importing)

Unentbehrlich war auch der iCalendar Validator (natürlich habe ich mittels Copy & Paste nur Snippets eingefügt, weil ich dem Serverbetreiber nicht Einsicht in all meine Check-Ins der letzten Monate geben wollte)

Outlook Calendar-Fehlermeldungen