Das folgende Beispiel zeigt, wie man mit dem Automator einen Dienst erstellen kann, mit dem man innerhalb eines markierten Textes bestimmte Zeichen und/oder Wörter ersetzen kann. Der Dienst kann aus allen Programmen verwendet werden, in denen Text markiert werden kann.
AppleScript replaceText()
Das Suchen und Ersetzen von Texten ist nicht als Standardaktion im Automator vorgesehen, so daß hier zuerst eine einfache AppleScript-Funktion für das Suchen und Ersetzen erstellt werden muß.
on replaceText(s, token, withToken)
considering case
set defaultDelimiter to text item delimiters of AppleScript
set text item delimiters of AppleScript to token
set elements to text items of s
set text item delimiters of AppleScript to withToken
set s to elements as string
set text item delimiters of AppleScript to defaultDelimiter
end considering
return s
end replaceText
Die Funktion replaceText() erwartet drei Parameter. Der Parameter s enthält den markierten Text. Mit token wird das zu suchende Textfragment angegeben und mit withToken der Ersetzungstext.
In der ersten Zeile der Funktion wird zunächst für alle Textoperationen die Groß-/Kleinschreibung aktiviert. Anschließen wird das AppleScript Standardtrennzeichen in einer Variablen zwischengespeichert. Nun wird als Trennzeichen das zu suchende Textfragment definiert und der Text in die einzelnen Teile anhand des Trennzeichens zerlegt. In der Variablen s ist nun eine Liste von Textelementen ohne das Trennzeichen gespeichert. Bei dem Beispieltext "Das ist ein Test" und dem token "ist" würde die Liste nun den Inhalt {"Das","ein Test"} enthalten.
Nachdem die Liste erstellt wurde, wird das Trennzeichen auf den Ersetzungstext gesetzt (withToken) und aus der Liste wieder ein Text erstellt, wobei zwischen jedes Element automatisch das aktuelle Trennzeichen eingefügt wird. So wird bei dem Ersetzungstext "war" aus {"Das","ein Test"} der Text "Das war ein Test".
Zum Schluß wird das Trennzeichen wieder auf das ursprüngliche AppleScript Standardtrennzeichen zurückgesetzt.
Dienst mit dem Automator erstellen
Nun muß nur noch im Automator ein entsprechender Dienst erstellt werden. Im Automator wählt man nach dem Klicken auf Ablage/Neu als Vorlage für den Arbeitsablauf Dienst aus. Im Kopf des Arbeitsablaufs wählt man nun Dienst empfängt ausgewählte(n) Text in in jedem Programm aus (Vorgabe) und setzt den Haken bei Ersetzt ausgewählten Text.
Jetzt muß noch aus der Aktionsbibliothek die Aktion Dienstprogramme/AppleScript ausführen in den rechten Bereich gezogen werden. Vor der Funktion run() muß nun in dem Quelltextfenster unsere AppleScript-Funktion replaceText() eingefügt werden. In der Funktion run() wird in dem Parameter input der markierte Text übergeben. Dieser kann nun mithilfe unserer Funktion beliebig verändert werden. Anschließen wird der veränderte Text als Rückgabewert zurückgegeben.
Beispiel, im dem die Umlaute und das Eßzett in HTML-Entitäten umgewandelt werden:
on replaceText(s, token, withToken)
considering case
set defaultDelimiter to text item delimiters of AppleScript
set text item delimiters of AppleScript to token
set elements to text items of s
set text item delimiters of AppleScript to withToken
set s to elements as string
set text item delimiters of AppleScript to defaultDelimiter
end considering
return s
end replaceText
on run {input, parameters}
set s to my replaceText(input, ".", ".")
set s to my replaceText(s, "ß", "ß")
set s to my replaceText(s, "Ä", "Ä")
set s to my replaceText(s, "Ö", "Ö")
set s to my replaceText(s, "Ü", "Ü")
set s to my replaceText(s, "ä", "ä")
set s to my replaceText(s, "ö", "ö")
set s to my replaceText(s, "ü", "ü")
return s
end run
Nach dem Speichern des Arbeitsablaufs steht nun zum Beispiel in TextEdit der entsprechende Dienst bereit.

![Validate my RSS feed [Valid RSS]](/templates/bitworld/images/valid-rss.png)
