Seite auswählen

Bisher hatte ich noch nichts mit AppleScript zu tun. Das hat sich nun geändert. Ich saß an meiner Jahresbuchführung und dabei muss ich eine ganze Reihe von E-Mails und deren Anhänge sichern. Bei dem immer wieder gleichen Ablauf kam mir irgendwann der Gedanke, das muss doch auch einfacher gehen. Wenn ich bisher eine E-Mail oder deren Anhang sichern und drucken wollte, lief es so:

  1. Mit Hilfe von ⌘ + P den Druckdialog aufrufen.
  2. Dann über das Dropdown-Menü die Option „Als PDF sichern …“ auswählen.
  3. Den Dateinamen anpassen: einerseits stelle ich immer das passende Datum in Form von JJJJ-MM-TT voran und andererseits sorge ich für aussagekräftige Benennungen. Gerne ohne Umlaute und Unterstrichen statt Leerzeichen1.
  4. Dann (erneut) den Druckdialog aufrufen, um die PDF-Datei auszudrucken.

Ein immer wiederkehrender Ablauf und damit prädestiniert für eine Automatisierung. Zunächst probierte ich ein wenig mit Keyboard Maestro herum, war aber recht schnell davon überzeugt, dass dies der falsche Ansatz sei. Eine kurze Suche mit entsprechenden Schlagworten brachte einige spezialisierte Softwarelösungen zutage (wie z.B. den E-Mail Archiver), die aber meinen Anforderungen nicht gerecht wurde (siehe oben und ich will auch nicht alle meine E-Mails archivieren). Dann entdeckte ich einen auch nur für sich genommen schon recht hilfreichen Tipp bei MacSparky: „Keyboard Shortcut for „Save as PDF…“ in OS X„. Das macht die Angelegenheit auch in anderen Fällen einfacher, aber der Tipp deckt nur einen der o.g. Schritte ab. Also suchte ich weiter und stieß ich auf einige vielversprechend aussehende Lösungsansätze, die eines gemeinsam hatten: AppleScript.

Nun habe ich nur rudimentäre Programmierkenntnisse, die im wesentlichen auf einen 19842 absolvierten BASIC Grundkurs und ein wenig Commodore 64 Spielerei zurückgehen. Daher rief die Aussicht sich mit AppleScript Programmcode zu beschäftigen nicht gerade die größte Begeisterung bei mir hervor. Aber da es anscheinend der aussichtsreichste (und ggf. auch einzige) Lösungsansatz zu sein schien, raffte ich mich auf, auf Basis bestehender Skripte etwas für meinen Anwendungsfall zu stricken.

Fast alle Lösungen, die ich gefunden habe, beruhen auf einer ich (nenne es Mal) dauerhaften Automatisierung. Man richtet das Script so ein, dass alle E-Mails, auf die eine bestimmte Regel zutrifft , auf bestimmte Weise abgespeichert werden. Ich brauchte eine etwas individuellere Lösung.

Das vielversprechendste AppleScript kam von Hubertus Schulze Rückamp: Email als PDF speichern, mit Attachments. An dieser Stelle nochmal herzlichen Dank für die Vorlage! Ich benötigte einige Anpassungen, da ich einerseits nur entweder die E-Mail als PDF oder den PDF-Anhang speichern wollte. Außerdem sollten diese auch gleich gedruckt werden. Also habe ich auf dieser Basis zwei AppleScripts für mich entwickelt.

Aber bitte beachte, dass diese Skript sehr speziell auf meine Bedürfnisse zugeschnitten ist und dazu auch nicht schön programmiert sondern eher laienhaft zusammengestümpert wurde. Aber für mich funktioniert es weitgehend.

AppleScript: E-Mail als PDF speichern und drucken

–> Code auf GitHub

Folgendes habe ich verändert und eingefügt:

  • Ordnerpfad an meine Bedürfnisse angepasst
  • Dateiname an meine Bedürfnisse angepasst. Insbesondere die Vorwegstellung des umgedrehten Belegdatums (JJJJ-MM-TT) und die Anpassung von Sonder- und Leerzeichen
  • für bestimmte Fälle wird ein vorgegebener Dateiname benutzt
  • Druckbefehl (Achtung: muss an den genutzten Drucker angepasst werden)

Mein größtes immer noch bestehendes Problem liegt anscheinend in der Nutzung von Gmail in Verbindung mit Apple Mail begründet. Da ich in Gmail die Label (oder Unterordner) recht aktiv nutze, haben viele meiner E-Mails mehrere Zuordnungen. Einmal stets im Ordner „Alle Nachrichten“, dann in der Regel kommen noch das Label „Rechnung“ und ggf. die jeweilige „Firma“ dazu. Lange hatte ich mich gewundert warum das Script stets drei Mal hintereinander durchlief und so z.B. alle Anhänge drei Mal gespeichert wurden, bevor das Script endete. Bis ich entdeckte, dass im Programmskript bei der Bestimmung welche E-Mails selektiert wurden, bei einer selektierten Mail immer drei verschiedene als selektiert identifiziert wurden. Im Grunde zwar die gleiche E-Mail, aber einmal im Ordner „Alle Nachrichten“, dann im Ordner „Rechnung“ und noch einmal im Ordner „Firma“. Ich habe hierfür keine echte Lösung gefunden. Mein derzeitiger Workaround besteht darin, dass ich dafür sorge, dass nur beim ersten Durchlauf der Programmschleife die jeweiligen Aktionen durchgeführt werden. Der Nachteil liegt klar darin, dass ich so nicht mehrere E-Mails markieren kann und diese dann in einem Rutsch mit meinem Script verarbeiten kann.

Fazit:

Die Beschäftigung mit AppleScript hat sich auf jeden Fall gelohnt. Die investierte Zeit wird sich relativ schnell wieder amortisieren und ich finde sicher noch weitere Anwendungsfälle in denen mir AppleScript helfen kann.

Ich würde jetzt gerne noch das Gmailproblem lösen, damit das Skript auch mit mehreren selektierten E-Mails funktionieren ohne alle E-Mails drei Mal auszugeben. Dann könnte ich beide Scripte noch konsolidieren, indem ich eine Prüfung einbaue, ob die E-Mail einen PDF-Anhang hat. Je nachdem würde dann entweder der Anhang gespeichert und gedruckt oder die E-Mail selbst.

Weitere Informationen:


  1. Ich durfte leider schon gelegentlich erleben, dass Software Probleme mit z.B. Umlauten im Dateinamen hatte und ich dann Daten wiederherstellen musste. Ist zwar schon länger her, aber seitdem habe ich eine Vorliebe für Dateinamen mit möglichst wenig Problemanfälligkeit. 
  2. Wow! Mir fällt gerade auf, dass ich damit dieses Jahr 30jähriges rudimentäre Programmierkenntnisse Jubiläum habe 😉 !