AppleScript bietet — neben den Anwendungen Automator und Kurzbefehle — die Möglichkeit, Prozesse zu automatisieren. In diesem Tutorial möchte ich zeigen, wie mit einem Skript Apple Mail zurückgesetzt werden kann. Genauer gesagt werden die Index-Dateien
- Envelope Index,
- Envelope Index-shm und
- Envelope Index-wal
entfernt.
Zum Zurücksetzen von Apple Mail hatte ich übrigens vor einiger Zeit bereits ein Tutorial geschrieben. Dabei wurde dieser Vorgang über das Terminal vorgenommen. Der hier gezeigte Weg ist insofern vorzugswürdig, als dass das erstellte Skript immer wieder aufgerufen werden kann. Das erspart die Eingabe von Shell-Anweisungen.
Für das Erstellen von Apple-Skripten hat Apple standardmäßig auf jedem Mac das Programm Skripteditor installiert, das sich im Verzeichnis
> Programme > Dienstprogramme
versteckt. Alternativ kann diese Anwendung auch über Spotlight, aufzurufen über die Tastenkombination command
+ Leertaste
, gestartet werden. Gebt in das sich öffnende Suchfeld einfach „Skripteditor“ als Suchbegriff ein.
Nach dem Öffnen des Skripteditors ist die Option „Neues Dokument“ auszuwählen. Stellt sicher, dass sich im öffnenden Editor-Fenster, das die Bezeichnung „Ohne Titel“ trägt, „AppleScript“ (und nicht JavaScript) ausgewählt ist.
Skript schreiben
In meinen Skripten beginne ich nicht sofort mit dem Code, sondern mit einigen Kommentarzeilen, die mit zwei Gedankenstrichen eingeleitet werden:
-- Delete the index files of Apple's mail app
-- Author: bodo
-- Version: 1.0
-- Date created: January 15th, 2022
-- Date modified: -
Dann geht es an den eigentlichen Code. Zunächst gilt es den Pfad zu den Index-Dateien festzulegen:
set index_file to (path to library folder from user domain as text) & "Mail:V9:MailData:Envelope Index"
set index_shm_file to (path to library folder from user domain as text) & "Mail:V9:MailData:Envelope Index-shm"
set index_wal_file to (path to library folder from user domain as text) & "Mail:V9:MailData:Envelope Index-wal"
Wir erreichen dies mit den Befehl set
, gefolgt von einem Variablennamen. Mithilfe von set
wird ein Wert einer Variable zugewiesen, so dass über diese Variable der Wert referenziert wird. Oder anders ausgedrückt: die Variable enthält den Wert.
Folgendes Beispiel soll dies verdeutlichen. Um meinen Namen einer Variable zuzuweisen, müsste ich in AppleSkript folgendes schreiben:
set my_name to "bodo"
Über die Variable „my_name“ könnte ich nun auf den Wert „bodo“ zugreifen. Dasselbe bewirken die ersten drei Zeilen des Skripts. Jeder Pfad zur jeweiligen Index-Datei wird einer Variablen zugewiesen.
Die Index-Dateien befinden sich unter macOS Monterey im Verzeichnis
/Users/<Benutzername>/Library/Mail/V9/MailData
Dieser Pfad kann jedoch nicht einfach einer Variable zugewiesen werden, ohne das es Probleme geben würde. Denn der Benutzername ist grundsätzlich auf jedem Mac verschieden. Der Pfad muss also dergestalt generalisiert werden, dass der Code auf jedem Mac funktioniert. Dies übernimmt die Zeile
(path to library folder from user domain as text)
Der erste Teil
path to library folder from
sollte selbsterklärend sein. Interessanter ist der Teil
from user domain
Damit wird erreicht, dass der Pfad des jeweils angemeldeten Benutzers verwendet wird. Auf meinem Mac würde dies „/Users/bodo/“ entsprechen.
Mit as text
wird lediglich sichergestellt, dass der Pfad als Text genutzt wird. Damit haben wir jetzt den ersten Teil des Pfads zum Library-Verzeichnis:
"Users:<Benutzername>:Library"
Dieser Teil wird jetzt unter Verwendung von &
mit dem Rest des Pfades verknüpft.
Auf zwei Dinge möchte ich hinweisen: Zum einen verwendet AppleSkript als Trennzeichen der Verzeichnisse einen Doppelpunkt (:
) und kein Slash (/
). Zum anderen funktioniert dieser Pfad nur unter der Version Monterey, da hier als Verzeichnisname „V9“ verwendet wird. Die Versionen davor haben die Bezeichnungen „V8“, „V7“, „V6“, usw. Wenn Ihr also nicht Monterey installiert habt, müsst Ihr „V9“ durch den bei Euch verwendeten Namen ersetzen. Ab macOS Sonoma lautet der Verzeichnisname „V10“ und ab macOS Sequoia muss „V11“ verwendet werden.
Um den aktuellen Verzeichnisnamen herauszufinden, kann bei geöffnetem Finder die Tastenkombination Shift
+ command
+ G
verwendet werden. Im sich öffnenden Fenster gebt Ihr dann
/Users/bodo/Library/Mail
ein, wobei „bodo“ mit Eurem Benutzernamen ersetzt werden muss.
Zurück zum Code: Nachdem nun drei Variablen erstellt wurden, die jeweils den Pfad zum Verzeichnis „MailData“ enthalten, können abschließend die drei Index-Dateien gelöscht werden. Diese Aufgabe übernimmt der Finder, der über tell
angesprochen werden kann:
tell application "Finder"
…
end tell
Ein tell
-Block muss mit end tell
wieder geschlossen werden. Dazwischen steht der auszuführende Code. Der gesamte tell
-Block sieht jetzt folgendermaßen aus:
tell application "Finder"
delete file index_file
delete file index_shm_file
delete file index_wal_file
end tell
Skript testen
Jetzt ist es an der Zeit, den Code zu testen. Zum Ausführen steht uns oben rechts ein Play-Button zur Verfügung.
Stellt sicher, dass Apple Mail geschlossen ist. Klickt dann auf den Play-Button. Wenn alles funktioniert, sollte im Ergebnis-Fenster (unterhalb des Editorbereichs) eine Rückmeldung ähnlich der folgenden erscheinen:
document file "Envelope Index-wal" of item ".Trash" of folder "bodo" of folder "Users" of startup disk of application "Finder"
Und wenn Apple Mail gestartet wird, sollte dieses Fenster erscheinen:
Mit einem Klick auf „Fortfahren“ wird der Mail-Index neu erstellt, was unter Umständen einige Zeit in Anspruch nehmen kann.
Skript speichern
Um unser Skript zukünftig bei Bedarf aufrufen zu können, müssen wir es speichern. Über
> Ablage > Sichern
oder command
+ S
öffnet sich ein Fenster, das uns erlaubt einen Speicherort und einen Dateinamen festzulegen.
Es besteht die Möglichkeit, auf AppleSkripte über die Menüleiste zuzugreifen. Dies muss allerdings einmal eingerichtet werden. Öffnet dazu die Einstellungen über
> Skripteditor > Einstellungen
und setzt ein Häkchen bei „Skriptmenü in der Menüleiste anzeigen“.
In der Menüleiste erscheint ein Skripteditor-Symbol. Klickt es an und wählt
Skriptordner öffnen > Skriptordner des Benutzers öffnen
aus. Jetzt kann das erstellte Skript in den Skriptordner kopiert (oder verschoben) werden, was zur Folge hat, dass es von jetzt an über die Menüleiste durch einen Klick auf das Skript-Symbol ausgewählt werden kann.
Sollte Apple Mail zukünftig Probleme bereiten, seid Ihr nunmehr in der Lage, mithilfe des Skripts das Mail-Programm zurückzusetzen.
Zuletzt aktualisiert am 13. September 2024