AppleScript hilft: einen ganzen Projektordner konvertieren

28. November 2008

Manchmal gibt es stupide Aufgaben, wo eine simple immer wieder gleiche Tätigkeit vielfach an unterschiedlichen Stellen ausgeführt werden muss.

Zum Beispiel die Konvertierung der Dateicodierung eines kompletten Projektordners mit hunderten von Dateien in zig Unterordnern. Diese Konvertierung war im vorliegenden Fall erforderlich, weil PHP u. U. allergisch auf UTF-8 codierte Script-Dateien reagiert, wenn diese eine Byte-Order-Mark Kennzeichnung (BOM) enthalten. Somit stellte sich die Aufgabe, mit Hilfe eines Texteditors in über 700 Programmdateien eines Projekts die eingestellte Zeichensatz-Codierung zu ändern – was per Hand mehrere Stunden Arbeit bedeutete…

Sofern sich die auszuführende Aktion scripten lässt, kann man jedoch mit einer einfachen AppleScript-Schleife eine komplette Ordner-Hierarchie rekursiv durchlaufen und die Aktion dann immer wieder in gleicher Weise auf alle enthaltenen Dateien anwenden.

War es in früheren Zeiten noch erforderlich, umständliche Routinen für das rekursive Durchlaufen eines Verzeichnisbaums zu programmieren, so gibt es inzwischen ein einfaches Finder-Kommando, welches einem den kompletten Verzeichnisbaum mit allen enthaltenen Objekten direkt zurückliefert:


tell application "Finder"
set theList to entire contents of theFolder as alias list
end tell

 

Mit Hilfe diese Konstrukts lässt sich die eingangs beschriebene Aufgabe unter Zuhilfenahme des Texteditors BBEdit mit ein paar kurzen Zeilen AppleScript wiefolgt lösen:


tell application "Finder"
set theFolder to choose folder
set theList to entire contents of theFolder as alias list

repeat with thisItem in theList
if kind of thisItem is not "Ordner" and file type of thisItem is "TEXT" then

tell application "BBEdit"
activate
open
thisItem

set myprops to properties of text document 1
if encoding of myprops is "Unicode (UTF-8)" then
set properties of text document 1 to {encoding:"Unicode (UTF-8, no BOM)"}
save text document 1
end if
close text document
1

end tell

end if
end repeat

end tell

Die eingesparte Zeit ließ sich nun prima nutzen, um diesen Tipp hier als Blogeintrag zu verewigen 😉

externe Links

Umstieg Entourage > Adressbuch – Datenkonvertierung und manuelles Nacharbeiten

15. August 2008

Wie im vorangegangenen Beitrag „Umstieg Entourage > iCal, Adressbuch, Mail“ angekündigt, berichte ich in einzelnen Abschnitten über die Ergebnisse des Umstiegs von Entourage auf die korrespondierenden Apple Anwendungen in OSX.

Die Vorgehensweise

Auf Anhieb war mir nicht ganz klar, welcher Weg am geeignetsten wäre, um die Entourage-Kontakte ins Adressbuch zu übertragen. Mein erster Gedanke war, ein passendes Konvertierungs-Tool aus dem WEB zu verwenden, um über den Umweg eines standardisierten Austauschformats zu gehen. Bei der Recherche entdeckte ich u.a. den Hinweis, dass es einen vorbereiteten Importer als AppleScript im System gibt. Das passende Script ist über das AppleScript-Menu aufrufbar:

Nach den vorhergehenden Erfahrungen beim Import der Kalender-Daten in iCal wollte ich mich auf dieses Abenteuer allerdings nicht noch einmal einlassen.

Stattdessen wählte ich den Weg über den Text-Export aus Entourage:

Anschließend lässt sich im Adressbuch aus dem Datei Menu über den Befehl „Importieren…“ die Option „Textdatei imporieren“ aufrufen. Ein Dialog erlaubt eine Zuordnung der gewünschten Quelldaten zu den Zielfeldern bevor der Import ausgeführt wird:

Die automatische Zuordnung der Postanschrift machte allerdings Probleme. Hier erwartet der Importer vom Adressbuch offenbar den Feldnamen „Stadt“, während Entourage dort den Feldnamen „Ort“ im Textexport erzeugt. Diese Zuordnung ließ sich mit den Auswahl-Pfeilen im Import-Dialog auch nicht manuell verstellen. Hier half nur, das Textfile vorab mit einem Text-Editor zu öffnen und die betreffenden Feld-Bezeichner in der Kopfzeile entsprechend zu ändern. Danach klappte dann auch die Erkennung im Import-Dialog und der Dateiimport konnte mit allen gewünschten Zuordnungen durchgeführt werden.

Das Ergebnis

Nach einigen Minuten Wartezeit waren meine etwa 1500 Adressen aus der Textdatei ins Adressbuch übertragen. Nahezu alle ursprünglichen Angaben blieben dabei erhalten, bis auf einige Ausnahmen:

  • keine Bilder (mit der Textdatei natürlich nicht machbar)
  • keine benutzerdefinierten Felder (konnten keine passenden Import-Felder zugeordnet werden)
  • keine Kategorien aus Entourage (auch hier keine Zuordnung anhand der Textfelder möglich)
  • keine IM-Adressen (gingen trotz Zuordnung verloren)

Die Auflösung und Zuordnung von mehreren Adressen, Telefonnummern, eMail-Adressen pro Kontakt und auch die Übertragung von Infos zu Partner/Kinder klappte dagegen zufriedenstellend.

Die manuelle Nachbearbeitung

Dadruch dass die Kategorien beim Import verloren gingen, ist – ähnlich wie schon bei iCal – eine Neueinrichtung und Zuordnung im Adressbuch erforderlich. Das Konzept der Kategorien unterscheidet sich allerdings zwischen beiden Anwendungen. Bei Entourage gab es ein programmübergreifendes Set an „Kategorien“, die allen Kontakten, Kalendereinträgen und eMail gleichermaßen zugordnet werden konnten. Im Adressbuch bieten sich als Alternative die „Gruppen“ an.

Also habe ich für meine wichtigen Kategorien im Adressbuch neue Gruppen angelegt und auch hier die Gelegenheit genutzt, das alte Set von 19 Kategorien auf ein etwas gestrafftes Set mit neuen semantischen Schwerpunkten zu reduzieren.

Da mir auch die Bilder zu den Kontakten wichtig sind, sowie einige der Informationen aus den beim Import verloren gegangenen benutzerdefinierten Feldern, habe ich mich für eine komplette manuelle Nacharbeitung aller Adressen entschieden. Das bedeutet also 1500 Adresskarten einzeln durchgehen und die betreffenden Felder nacharbeiten! Dieser Job zieht sich nun bereits in der 3. Woche hin (immer mal nebenbei eine halbe Stunde bis Stunde Bereinigung) und ich habe inzwischen etwa 70% der Adressen geschafft.

Nun könnte man natürlich einwenden, was für ein großer und unproduktiver Aufwand das ist… Ich habe mich trotzdem entschlossen, diesen Weg zu gehen und zwar aus folgendem Grund: Während der letzten 20 Jahre, in denen ich meine Kontakte elektronisch erfasst habe hat sich ein Wust an nicht mehr aktuellen Einträgen angehäuft – zudem sind viele Kontakte auch einfach nicht mehr relevant (ehemalige Lieferanten, Kunden und Mitarbeiter aus anderen Firmen-Kontexten, etc.). Daher ist es nun eine gute Gelegenheit, alle unnötigen Einträge komplett zu löschen und diejenigen die übrig bleiben gleich auf den aktuellen Stand zu bringen. Schließlich möchte ich im Zeitalter des iPhones nun auch ein überschaubares Set an Adressdaten überall dabei haben 🙂

Ein Punkt, der mir bei der Überarbeitung der Einträge sehr negativ aufgefallen ist, ist die etwas hakelige Text-Selektion im Adressbuch. Oft passiert es – gerade im großen Notizen-Feld -, dass versehentlich der gesamte Text ausgewählt wird und man dann alles überschreibt. Hier greift dann nicht einmal die Undo-Funktion, sondern der überschriebene Text ist einfach weg! Das nervt gewaltig…

Auch lassen sich bei mehrfachen Telefon-Einträgen am Kontakt oft nicht die Etiketten (privat, arbeit, mobil) richtig zuordnen, wenn man nachträglich falsche Einträge bereinigen möchte. Das Adressbuch entwickelt hier einen trotzigen Eigenwillen und verstellt manchmal aus unerklärlichen Gründen die Etiketten beim Abspeichern des Eintrags. Hier hilft dann nicht mal ein nochmaliges Ändern, sondern einige Etiketten sind regelrecht resistent gegen Änderungsversuche. Hier sollte Apple unbedingt noch mit Bugfixes nachbessern!

Fazit

Wie schon bei iCal macht auch das Adressbuch einen schlanken und aufgeräumten Eindruck. Darüber hinaus ist es gerade im Unterschied zu Entourage sehr praktisch, dass man das Programmfenster mit den Kontakten beliebig vergrößern und verkleinern kann. Eine Option von der ich in Entourage deshalb keinen Gebrauch gemacht habe, weil dort das gleiche Fenster ja auch für die eMail-Übersicht verwendet wurde, und man dort eher den gesamten Bildschirm ausnutzen möchte. Während es beim Nachschlagen eines Kontaktes oft ausreicht, ein kleines Adressfenster anzuzeigen.

Auch das Geschwindigkeitsverhalten ist spürbar angenehmer im Adressbuch. Die Suchfunktion in Entourage war mit 1500 Kontakteinträgen derart träge, dass bis zu 10 Sekunden(!) vergingen, bevor die Ergebnisliste angezeigt wurde. Hier reagiert die Such-Eingabe vom Adressbuch bei der gleichen Datenmenge nahezu in Echtzeit.

Positiv ist auch das modulare Konzept der Datenfelder im Adressbuch. Man kann einfach beliebig viele Telefonnummern, eMail-Adressen, WEB-Adressen, Post-Anschriften, etc. hinzufügen, ohne auf eine vorgegebene Feld-Aufteilung beschränkt zu sein.

Eine interessante Option ist sicher auch die Möglichkeit, über Schlagworte im Notizfeld in Kombination mit „Smart-Groups“ (gespeicherten Suchen) dynamische Gruppen-Selektionen aufzubauen. Bislang mache ich davon jedoch noch keinen Gebrauch, sondern bin froh über das bei der Aufräumaktion gestraffte Set an Gruppen (ehemals Kategorien).

Umstieg Entourage > iCal – Datenkonvertierung und erste Eindrücke

15. August 2008

Wie im vorangegangenen Beitrag „Umstieg Entourage > iCal, Adressbuch, Mail“ angekündigt, berichte ich in einzelnen Abschnitten über die Ergebnisse des Umstiegs von Entourage auf die korrespondierenden Apple Anwendungen in OSX.

Die Vorgehensweise

iCal bietet eine eigene Import-Funktion im Datei-Menu an. Wenn man den Eintrag „Importieren…“ aufruft, ist u.a. die Option „Entourage-Daten importieren“ auswählbar:

Die Funktion ist eigentlich recht simpel und man kann nicht viel falsch machen. Jedoch sollte man sich darüber im Klaren sein, dass es keinerlei Eingriffsmöglichkeiten bei der Datenübertragung gibt. Zudem kann der gesamte Vorgang je nach Datenmenge erhebliche Zeit beanspruchen. Bei mir dauerte die Übertragung der Kalenderdaten von Entourage nach iCal nahezu 3 volle Tage(!). Zwar wird durch einen blauen Fortschrittsbalken angezeigt, dass etwas passiert – jedoch muss man schon erhebliche Geduld und Beharrungsvermögen mitbringen, da über lange Zeiträume anhand des Balkens keinerlei Fortschritte ersichtlich sind. Zudem sollte in dieser Zeit natürlich nicht mit dem Kalender gearbeitet werden, da nicht sicher ist, ob  Änderungen bei der Datenübertragung berücksichtigt werden.

Das Ergebnis

Wenn die lange Wartezeit überstanden ist und der Importer seinen Job erledigt hat (ja, dass tut er wirklich, auch wenn es hierzu viele anderslautende Hinweise im WEB gibt; die Jungs hatten wohl einfach nicht genügend Ausdauer 🙂 ) findet man in iCal einen neuen Kalender vor mit dem Namen „Entourage“.

Wer jetzt erwartet hat, dass beim Importieren alle Kategorien und Zuordnungen der Kalendereinträge erhalten bleiben, wird leider enttäuscht!

Obwohl gerade dies ja eine der Stärken von iCal ist, dass man mehrere Kalender parallel pflegen und bei Bedarf einzeln ein- und ausblenden kann, macht der Datenimport keinen Gebrauch davon. Hier ist notfalls manuelles Nachpflegen angesagt.

In der Praxis muss man sich allerdings fragen, wie sinnvoll es ist, für zurückliegende Ereignisse im Kalender diese Zuordnungen nachträglich noch zu ändern. Die Anzahl der vorausgeplanten Einträge ist dagegen ja meistens relativ überschaubar.

Also habe ich aus der Not eine Tugend gemacht und nur die Einträge des aktuellen Jahrgangs manuell überarbeitet. Alle alten Einträge habe ich im Kalender „Entourage“ liegen lassen und benutze diesen nur als Archiv, um bei Bedarf dort nachzuschauen. Dies bietet obendrein den großen Vorteil, dass bei der späteren Datensynchronisation mit dem iPhone (oder ggf. mobileMe) keine umfangreichen Altdatenbestände übertragen werden müssen.

Die manuelle Nachbearbeitung

Einige Punkte sind nach dem Datenimport in iCal nicht zufrieden stellend und bedürfen einer manuellen Nacharbeitung. Trotz meinem umfangreichen Kalender-Archiv hielt sich die manuelle Überarbeitung jedoch in Grenzen. Bereits nach 1-2 Stunden war ich mit dem Ergebnis zufrieden und konnte anfangen, mit iCal produktiv zu arbeiten.

Wie oben schon beschrieben, gingen beim Import sämtliche Kategorien aus Entourage verloren. Also musste für jede Kategorie ein neuer Kalender in iCal angelegt und mit dem passenden Farbcode versehen werden. Ich habe diese Gelegenheit zum Anlass genommen, die alten Kategorien (vormals 19) zu straffen (auf nun noch 7 zzgl. Archiv):

Im nächsten Schritt bin ich das aktuelle Jahr 2008 im importieren Kalender „Entourage“ durchgegangen und habe alle vorhandenen Einträge auf die neu angelegten Kalender-Kategorien verteilt. Zu guter Letzt habe ich den Kalender „Entourage“ in „Entourage Archiv“ umbennant.

Später (nach dem Import der Kontaktdaten ins Adressbuch) fiel auf, dass alle Geburtstags-Einträge doppelt erscheinen. iCal bietet hier die automatische Übernahme der Geburtstage aus dem Adressbuch (siehe ScreenShot oben). Da die Geburtstage jedoch bereits im Entourage als ganztägige Kalendereinträge vorhanden waren, wurden sie nun doppelt in der Kalenderübersicht angezeigt. Daher habe ich alle alten Einträge manuell aus dem Kalender „Entourage Archiv“ gelöscht und ggf. die vorhandenen Einträge im Adressbuch bereinigt und auf den aktuellen Stand gebracht (im Schritt 2 bei der Übertragung der Kontaktdaten).

iCal

Die Anwendung macht einen schlanken und übersichtlichen Eindruck. Die Oberfläche sieht aufgeräumt aus und stellt alle wichtigen Informationen auf einen Blick zur Verfügung. Von der Bedienung her entspricht iCal weitestgehend der gewohnten Bedienung in Entourage. Termine können per Drag&Drop mit der Maus schnell im Kalender eingetragen werden. Lediglich das „Bearbeiten“-Fenster für den Termin (Doppelclick auf den Eintrag) unterscheidet sich von der Darstellung in Entourage (links im Bild iCal, rechts Entourage):

Beim ersten Arbeiten mit iCal kommt mir die Anwendung subjektiv etwas schneller vor als Entourage. Dies mag auch damit zusammen hängen, das iCal nativ auf dem Intel-Prozessor läuft, während Entourage 2004 hier noch als PPC-Anwendung über Rosetta emuliert wird (was ja einer der Gründe für den Umstieg auf iCal war).

Trotzdem ist der Umgang mit iCal während der Umstiegsphase für mich sehr gewöhnungsbedürftig. Zwar sind es nur Feinheiten, aber die langjährige Arbeit mit Entourage macht es schwer, sich von alten Gewohnheiten zu lösen und sich auf Neues einzulassen. Ein paar Beispiele:

  • Allein das Öffnen einer extra Anwendung für den Kalender ist ein ungewohnter Schritt. Früher war der Kalender beim Klick ins Entourage-Arbeitsfenster schnell da; nun muss ein neues Programm aus dem Dock gestartet werden. Andererseits von Vorteil: der Kalender kann nun schnell per Tastendruck (Apfel-H) ausgeblendet werden.
  • Die Kategorien-Farben erscheinen in der iCal-Kalenderansicht sehr blass. Dies gibt zunächst ein ungewohntes Bild gegenüber der alten eingeprägten Ansicht. Besonders die grün- und gelb-Töne sind auf den ersten Blick kaum zu unterscheiden. Auch das satte Blau (für mich eine wichtige Projekt-Kategorie) ist schier nicht darstellbar. Auch wenn man das dunkelste verfügbare Blau für den Kalender auswählt, erscheinen die zugehörigen Einträge doch sehr hell und blass…
  • Die Geburtstagseinträge werden nach „Schema F“ vom Adressbuch übernommen: „Nachname Vornames Geburtstag“. Das ist lang und unleserlich, gerade wenn mehrere Einträge auf engem Raum zusammen stehen. Früher hatte ich einprägsame Kurznamen als Titel für die Geburtstage gewählt. Auch erscheinen nun sämtliche Geburtstage unweigerlich im Kalender, hier war bei Entourage eine manuelle Vorselektion möglich.
  • Die Liste der Aufgaben erscheint immer vollständig am rechten Rand des Kalenderfensters. Gerade bei vielen offenenen Aufgaben ist es schwierig, sich visuell schnell zu orientieren.

Fazit

Der Umstieg ist bis zwar nicht reibungslos aber dennoch zufriedenstellend verlaufen. Manche Punkte unterscheiden sich in Konzept oder Darstellungsweise zwischen den Programmen. Allerdings lässt sich ein Großteil davon durch eine neue Herangehensweise beim Arbeiten oder durch Änderung der eigenen Gewohnheiten in den Griff bekommen.

Ein Pluspunkt ist für mich die einfache und schnelle Synchronisation mit dem iPhone, die auf Anhieb geklappt hat. Die Kalender-Darstellung auf dem iPhone ist sehr übersichtlich und ermöglicht so eine effektive Verwendung unterwegs. Zudem lässt sich der Datenabgleich mit dem iPhone auf ausgewählte Kalender-Kategorien und einen eingeschränkten Zeitraum (z.B. letzte 30 Tage) eingrenzen.

Im Wesentlichen läuft der Gewöhnungsprozess darauf hinaus, dass man nun nicht mehr wie in Entourage alle Informationen in einer Umgebung hat, sondern sich bei iCal / Adressbuch die Daten und Arbeitsabläufe auf unterschiedliche Programme verteilen.

Ich werde weiter von meinen Erfahrungen berichten…

Umstieg Entourage > iCal, Adressbuch, Mail

15. August 2008

Nach langen Jahren täglicher Arbeit mit Microsoft Entourage auf dem Mac steht nun ein Wechsel an. Ich möchte meine gesamte Datenorgansiation auf die im Mac OS integrierten Apple-Produkte umstellen. Die Ergebnisse und Erlebnisse dieses Umstiegs dokumentiere ich auf diesen Seiten. Vielleicht ist für jemanden in ähnlicher Situation ein nützlicher Hinweis dabei…

Gründe für den Umstieg

  • gleichzeitiger Umstieg von Mac OSX Tiger (10.4) auf Leopard (10.5)
  • Umstieg aufs iPhone -> Synchronisation von Kalender und Kontakten mit dem Mac
  • Ausmistung alter PowerPC Software von meinem Intel MacBook Pro

Vorgeschichte

Bislang habe ich konsequent alle Termine, Kontakte, eMails in „Entourage 2004“ gepflegt. Vorangegangen ist bereits eine über 10-jährige Migrationshistorie von „Claris Organizer“+“Eudora Mail“ über „Palm Organizer“+“Microsoft Outlook Express“ mit späterer Konsolidierung in „Entourage X“.

Das bedeutet unter anderem, dass bereits ein umfassender Workload in der Entourage Datenbank vorliegt:

  • 10 Jahre mit Kalendereinträgen
  • 1.500 Adressbucheinträge (mit Kategorien, Zusatzinformationen, z.T. Fotos)
  • 38.000 archivierte eMails (ohne Anhänge)
  • 26 unterschiedliche aktive Mail-Accounts (größtenteils über POP3)
  • 1,15 GigaByte Datenvolumen in der Entourage-Datenbank

Im Laufe des vergangenen Jahres hatte ich zudem zahlreiche Optimierungen in meinem Ablagesystem und in der Workflow-Systematik vorgenommen. Inspiriert von GTD, Inbox-Zero und Konsorten habe ich einen  Workflow über 5 Stufen eingerichtet, der sich mit Tastatur-Kurzbefehlen schnell und effizient steuern lässt. Eine zusäzliche Sicht auf die Daten bieten Smart-Folder/gespeicherte Suchen (die ich in der Praxis jedoch selten nutze).

Projektablauf der Migration

Da die Datenkonvertierung nicht an einem Stück erledigt werden kann und nebenbei die tägliche Arbeit mit den Daten weiter gehen muss, habe ich mich für einen Umstieg in Etappen entschieden. Zudem hatte ich bislang keinerlei geeignete Praxis-Erfahrungen mit den Apple Applikationen (iCal, Adressbuch) weshalb ich einige Punkte für die Konvertierung vorab nicht einschätzen konnte (z.B. Verwendung von Kategorien, Verknüpfung von Einträgen).

Eine Recherche nach geeigneten Tools oder Anleitungen im Internet blieb ohne brauchbare Ergebnisse (u.a. ein Grund, warum ich diesen Blogpost hier hinterlasse). Die meisten Hinweise im WEB bezogen sich auf ältere Versionen oder behandelten nur spezifische Problemfälle.

Also habe ich mich entschlossen, einfach ins „kalte Wasser“ zu springen und ad hoc mit der Konvertierung zu starten…

Folgende Reihenfolge war für mich naheliegend, damit die Arbeit mit den Daten möglichst ungehindert weiter laufen kann:

  1. Konvertierung des Kalenders (Entourage > iCal)
  2. Konvertierung der Kontakte (Entourage > Adressbuch)
  3. Konvertierung der eMail-Konten (Entourage > Mail)

Ich wollte zunächst parallel in Entourage und den neuen Anwendungen arbeiten, um zu sehen, ob sich gewohnten Arbeitsweisen auf die neuen Anwendungen übertragen lassen. Nur mit den eMail-Konten warte ich bis zum Schluss, da hier eine doppelte Datenpflege nicht sauber handhabbar ist.

Ergebnisse

Der besseren Übersicht halber werde ich die Ergebnisse der einzelnen Migrationsschritte in separaten Blog-Einträgen dokumentieren:

externe Links