[script] Geburtstage im iPhone mittels Outlook

Mit Windows und Outlook habe ich bekanntlich nicht viel am Hut. Gut das sich Tobias Gaiselmann damit auskennt und der ganz speziellen ‚Geburtstags-Thematik‘ annimmt. Hier sein Bericht:

geburts1.jpggeburts2.jpg

Leider werden die Geburtstage, die man im iPhone bei den Kontakten hinterlegt, nicht automatisch in den Kalender eingetragen. Es gibt also auch keinerlei Erinnerung, wenn jemand Geburtstag hat. Inzwischen gibt es zwar die nette App “HappyDayz!“, aber auch hier bekommt man die Geburtstage lediglich schön angezeigt. Eine Erinnerungs-Funktion ist hier ebenfalls nicht möglich, da Apple in den Richtlinien verbietet Applikationen im Hintergrund auszuführen. Viele User von HappyDayz! haben angeregt, die Geburtstage von der App in den Kalender eintragen zu lassen. Allerdings erlaubt auch hier das SDK den Zugriff nicht.

Mich hat dies auch schon seit längerem gestört. Heute kam mir dann die Idee, wieso das Ganze nicht über Outlook zu machen? Ich verwende mein iPhone ja sowieso mit einem Exchange Server. Von daher bietet es sich ja an. Outlook trägt in der Regel die Geburtstage, die man bei Kontakten hinterlegt, automtisch in den Kalender ein. So weit so gut. Ich hätte aber doch ganz gerne, dass ich direkt im Kalendereintrag sehe, wie alt die betroffene Person denn eigentlich wird. Also musste auch hier etwas anderes her.

Ich hab mich also hingesetzt und mir ein VBA Script (Makro) erstellt. Dieses Script geht alle meine Kontakte, bei denen ein Geburtstag hinterlegt ist, durch und erstellt am entsprechenden Tag einen Eintrag (mit Alter) im Kalender. Das Script generiert die Geburtstage 10 Jahre im Vorraus – was für mich völlig ausreichend ist. Nach dem Starten des Makros hat man die Möglichkeit diverse Eingaben zu machen. Unter anderem Erinnerungszeit, Präfix für den Eintrag und ob das Alter im Eintrag ersichtlich sein soll.

Während dem Scripten stieß ich dann auf die Frage: Wie aktualisiere ich Einträge, wenn ein Geburtstag oder der Name eines Kontaktes geändert wird?! Da ich keine eindeutige ID o.ä. zur Verfügung habe, musste ich einen etwas umständlichen – dafür aber sauberen – Weg einschlagen. Und zwar werden zu Beginn des Scriptes alle Einträge aus dem Kalender gelöscht. Der ein oder andere wird jetzt sicherlich Panik bekommen, denn es könnten ja auch andere Kalendereinträge vorhanden sein. Aber auch hierfür habe ich eine Lösung gefunden. Zum einen verwende ich bei mir einen extra Kalender (Geburtstage) für die Einträge und zum anderen schreibe ich in jeden Eintrag in das Feld Kategorie den Namen des Kontaktordners rein. Es werden beim Löschvorgang dann nur die Einträge gelöscht, die eben diesen Namen im Kategoriefeld stehen haben.

Soviel ersteinmal zur Theorie. Wie das ganze jetzt in der Praxis funktioniert zeige ich euch jetzt.

Ich gehe davon aus, dass ihr auf eurem iPhone und in Outlook bereits den Exchange Account eingerichtet habt und es einen neuen Kalender Geburtstage (nicht zwingend notwendig) gibt. Ebenso sollten bei den Kontakten die Geburtstage eingetragen sein – aber das habt ihr ja sicherlich schon, sonst würdet ihr das hier gar nicht lesen…

  1. Zuerst benötigt ihr das VBA Script (Makro). (Download auf meiner Seite)
  2. Entpackt die heruntergeladene ZIP-Datei in einen beliebigen Ordner.
  3. Danach Outlook starten
  4. Drückt jetzt die Tasten ALT + F11 (Makro-Editor)
  5. Im neuen Fenster wählt ihr im Menü: Datei -> Datei importieren …
  6. Wechselt in den Ordner – in dem zuvor die Datei entpackt wurde – und wählt dann die Datei “Geburtstage.bas” aus.
  7. In der Baumansicht auf der linken Seite des Fenster sollte jetzt ein Eintrag Module -> Geburtstage vorhanden sein.
  8. Ist dies der Fall, könnt ihr den Editor wieder schließen.
  9. Wählt als nächstens den Eintrag Extras -> Makro -> Makro … (Alt + F8) aus dem Outlook-Menü.
  10. Hier sollte jetzt ein Eintrag “BirthdayEntries” erscheinen. Wählt diesen aus und klickt anschließend auf Ausführen.
  11. Das Script beginnt und am Anfang erscheinen ein paar Eingaben
  12. Im ersten Eingabfeld könnt ihr einen Text eingeben, der vor den Kalendereinträgen stehen soll.
    z.B. Geburtstag von
  13. Im Anschluss könnt ihr entscheiden, ob die Altersangabe in den Einträgen erscheinen soll.
    Mögliche Eingaben sind hier: J oder N
    Bei Eingabe von J wird bei jedem Eintrag das Alter des Kontaktes angezeigt. Bei N entsprechend nicht.
  14. Bei der nächsten Eingabe könnt ihr festlegen wann ihr erinnert werden wollt. Die Eingabe ist hier in Minuten zu machen. Sprich, wenn ihr 5 Minuten vor dem Ereignis erinnert werden wollt, gebt eine 5 in das Eingabefeld ein. Falls ihr keine Erinnerung wollt gebt einfach ohne in das Textfeld ein.
  15. Jetzt müsst ihr noch euren gewünschten Kontakte-Ordner wählen. (Ihr könnt gerne auch das Script ein zweitesmal für einen anderen Ordner starten)
  16. Zum Schluss muss noch gewählt werden in welchem Kalender-Ordner die neuen Einträge erstellt werden sollen.
  17. Nach dem Wählen des Ordners und Bestätigung durch OK werden die Einträge erzeugt. Es kann gut sein, dass die Anzeige für einige Minuten stehen bleibt. Dies ist aber normal und extrem abhängig von der Anzahl der Kontakte.
  18. Am Ende des Scriptes erscheint die Meldung “Kalender-Einträge wurden erstellt.”

Das wars eigentlich schon. Bitte habt ein wenig Geduld bis die Einträge auch auf dem iPhone erscheinen. Je nach Anzahl der Kontakte und somit der erstellten Einträge kann das gut und gerne mal mehrere Minuten gehen.

Bei Anregungen und Fragen benutzt einfach die Kommentar-Funktion hier oder auf meiner Seite.

In der Zwischenzeit arbeite ich an einer Windows-Application, die das Ganze noch komfortabler machen soll. Näheres hierzu fndet ihr in Kürze in meinem Blog http://gaiselmann.net.


Für Mac-Benutzer sei noch das iCal-Automator-Skript meiner Podcast-Kollegin Winnie empfohlen, das sich der automatischen Erstellung eines Geburtstagskalenders auf Basis des Adressbuchs mit Erinnerung annimmt.

-> iCalBirthdays: Automator-Action