Import von Terminen (ICS) in einen ownCloud-Kalender
Anforderung
Ich habe die Anforderung, dass alle meine Termine zusammen in einem (bzw. mehrerre) gemeinsamen Kalender abgelegt werden sollen. Auf diesen Kalender soll dann ein begrenzter Personenkreis z.B. meine Frau Zugriff haben.
Meine privaten Termine und Geburtstage pflege ich in einer ownCloud-Instanz. Hier sind alle Termine gepflegt und werden auf meinen Endgeräten z.B. Outlook 2013 auf dem PC und Surface oder Kalender auf dem Android-Smartphone angezeigt. Meine geschäftlichen Termine liegen in einem Exchange-Server-System und sind von außen für mich nicht erreichbar.
Kalender veröffentlichen
Durch Zufall habe ich die veröffentlichen Funktion in meinem Kalender in Outlook 2013 gefunden. Dieses ist mit einem Rechtsklick auf den Kalender verfügbar. Dort gibt es dann die Möglichkeit einen Kalender freizugeben bzw. auf einem WebDAV-Server zu veröffentlichen.
Hier konnte ich meine ownCloud-Instanz entsprechend mit dem WebDAV-Link ansprechen: http://domain.de/remote.php/webdav/Ablageordner
Wobei “domain.de” die zugehörige Domain ist und “Ablageordner” der gewünschte Ordner in der ownCloud.
Die Datei wird nun regelmäßig aktualisiert und als ICS-Datei im per WebDAV abgelegt. Mit einem Klick im Web-Interface der ownCloud habe ich nun die Möglichkeit die ICS-Datei in einen ownCloud-Kalender zu importieren.
Datei freigeben
Der manuelle Weg ist natürlich nicht so praktikabel, somit musste der Ablauf noch automatisiert werden.
Über die “Link teilen” Funktion in der ownCloud ist es möglich, diese Datei für mich freizugeben bzw. einen Zugriff zu erlauben. Damit habe ich die Möglichkeit die manuelle Tätigkeit per Script zu automatisieren.
Import automatisieren
Für den automatischen Import der ICS-Datei in den ownCloud-Kalender habe ich dieses Skript gefunden:
http://zeit-zu-handeln.net/2014/02/allgemein/owncloud-6-kalender-ical-feeds-importierenexportieren/
Nach ein paar kleineren Anpassungen (siehe auch die Kommentare) konnte ich das Skript auch in einer aktuellen ownCloud 8 Version verwenden.
Dann das Skript regelmäßig ausgeführt wird, musste noch ein Cronjob konfiguriert werden, der die PHP-Datei regelmäßig ausführt. Den Job habe ich konfiguriert damit er alle 2 Stunden im Hintergrund ausgeführt wird.
Fazit
Jetzt habe ich meine kompletten Termine in einem System und kann von allen Endgeräten die Daten lesend einsehen. Wichtig war für mich auch, dass die Daten auf einem von mir gehosteten System und nicht z.B. bei Google Calendar etc. liegen. Den Zugriff kann ich jetzt entsprechend mit Berechtigungen einstellen.
Jetzt habe ich eine transparente Visualisierung aller Termine und dies auch noch unabhängig von den Endgeräten 🙂