Bitmon.de for the yummy bits'n'bytes out there

2Mai/10

Kalender für den Desktop mit Synchronisation zu Google Calendar

Heute habe ich mich einer Sache zugewendet die mich schon länger beschäftigte:

Wie nutze ich möglichst effizient ein Kalendersystem das möglichst plattformunabhängig ist, zwischen verschiedenen Kalendersystemen korrekt synchronisiert und möglichst backupfähig ist.

Google Calendar bedient zumindest einige dieser Probleme, es ist von jedem Betriebssystem aus aufrufbar, erfordert aber eine Verbindung zum Internet und bietet lediglich Browserfunktionalität, eine Desktopintegration wird nicht angeboten.

Natürlich gibt es auch schöne Kalender für Mailprogramme, wie z.B. Lightning für Mozilla Thunderbird, oder die Kalenderfunktionen von Outlook, allerdings hapert es hier im Zusammenspiel mit z.B. Google Calendar als Synchronisationsschnittstelle. Zwar lässt sich der Kalender im Normalfall ordentlich direkt aus dem Internet "abonnieren", Änderungen im Kalenderprogramm werden dadurch aber nicht bei Google Calendar übernommen.

Daher habe ich mir nun das folgende Konstrukt gebastelt:

Mithilfe des GCALDaemon rufe ich meinen Google Calendar ab und speichere diesen lokal als iCalendar Datei. Diese Datei kann man nun mit dem Kalendertool seiner Wahl importieren und darauf Arbeiten, ich verwende dafür Rainlendar. Rainlendar mag zwar proprietär sein aber ich finde das Tool ganz nett und die Free Version reicht für mich aus. Wer dort zur Premiumvariante greifen will hat natürlich die Google Calendar Synchronisation gleich dabei und muss nicht basteln.

GCALDaemon ruft nun alle 10 Minuten meinen Google Calendar ab und aktualisiert dementsprechend meine lokale iCalendar Datei, die wiederum von Rainlendar auf Änderungen überwacht wird und so Updates sofort eingelesen und angezeigt werden. Wenn ich in anderer Richtung in Rainlendar ein neues Event hinzufüge so überprüft GCALDaemon alle 10 Sekunden die iCalendar Datei auf Änderung und übermittelt diese dann direkt an Google Calendar.
Solange mein Rechner online ist steht der bidirektionalen Synchronisierung also nichts mehr im Wege. Wie sich das ganze ohne Internetzugriff verhält muss ich noch testen, aber GCALDaemon lässt sich auch für offline-/Dial-Up-Betrieb konfigurieren.

Um zusätzlich von meinem Laptop aus Zugriff zu haben ohne ganz auf die Synchronisation über Google angewiesen zu sein habe ich die iCalendar Datei in meiner Dropbox (eine Art SVN mit Systemintegration) abgelegt um diese im Rainlendar auf dem Laptop zu importieren. Ein weiterer Vorteil dabei ist, dass auch Aufgaben transferiert werden können, die bei der Synchronisation mit Google Mail nicht unterstützt werden und daher von GCALDaemon lokal abgelegt werden, also Vorsicht bei einer Neuinstallation.

Hier nun eine Kurzanleitung zur Konfiguration von GCALDaemon (sehr ausführlich aber auf Englisch hier):

Nach der Installation von GCALDaemon muss zunächst einmal die verschlüsselte Variante des Benutzerkennworts bei Google berechnet werden. Dies geschieht mithilfe des mitinstallierten Tools Password Encoder (Name im Startmenü) bzw. im GCALDaemon Programmordner bin\password-encoder.bat  (Achtung, dieses Tool erfordert, dass Java installiert ist und den Umgebungsvariablen hinzugefügt wurde, sonst erhaltet ihr eine Fehlermeldung):

Encodieren des Passworts

Dieses kopieren (mit einem Rechtsklick kann man die Markierfunktion aktivieren) und mit einem Texteditor die Konfigurationsdatei von GCALDaemon öffnen.
Unter Windows 7  64 Bit befindet sich diese im Normalfall under C:\Programe (x86)\GCALDaemon\conf\gcal-daemon.cfg
Dort muss dann bei Gmail Password das encodierte Passwort eingefügt werden, bei Gmail User der Benutzername .
Für den Dateipfad der google.ics muss man den Pfadsyntax beachten, hier gezeigt ist ein Beispielpfad um die Datei in der Dropbox zu lagern. Sofern man keinen speziellen Speicherort für diese Datei auswählen möchte kann man dies ruhig auf den Standardeinstellungen belassen, die .ics wird dann im GCALDaemon Programmordner abgelegt.
Zu der Google Calendar Private iCAL File URL kommen wir im nächsten Schritt.

Ändern der gcal-daemon.conf

Die URL der ICAL Datei lässt sich in den Kalendereinstellungen bei Google Calendar finden, einfach Rechtsklick und kopieren auf den grünen ICAL Button (wichtig: Den Link bei Privatadresse kopieren, NICHT bei Kalenderadresse!).
Diese URL dann wie oben gezeigt kürzen und an entsprechender Stelle in die gcal-daemon.conf einfügen.

Kopieren des ICAL Links

Anschließend sicherstellen das die gcal-daemon.conf gespeichert wurde. Nun sollte man einen ersten Abruf des Kalenders durchführen, dies geht über das Startmenü durch Aufruf von "Sync now!" oder im GCALDaemon Programmordner  bin\sync-now.bat
Wenn alles geklappt hat sollte sich nun am in der .conf angegebenen Dateipfad die google.ics befinden. Diese lässt sich nun in Rainlendar importieren über den Button "Add". Danach sollte es in etwa so aussehen:

Importieren in Rainlendar

Wichtig ist dabei das ihr "Monitor changes" auf yes stellt, sonst erkennt Rainlendar nicht "Live" das neue Einträge hinzugekommen sind.

Weiterhin sollte der GCALDaemon als Dienst installiert werden, dies könnt ihr über das Startmenü mit GCALDaemon\Service\Install  sowie anschließend mit Start durchführen, oder im GCALDaemon Programmordner mit bin\service-install.bat sowie bin\service-start.bat

Mit diesen Einstellungen und einer Dateiablage in Dropbox sollte sogar ein weitestgehender Liveupdate zwischen mehreren "Rainlendarn" möglich sein, ohne die Synchronisierung über Google Calendar abwarten zu müssen. Um die Funktion der Tasks getrennt zu halten kann auch wie im Screenshot oben zu sehen ein zweiter Kalender angelegt werden der nur die Tasks enthält, welcher dann bei Bedarf und Kompatibilität importiert werden kann.