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)