AppleScript zum Erstellen von Abstandsformaten wie "SPACIN G"?

Um Textdokumente besser lesbar zu formatieren, wäre es schön, ausgewählte Texte durch ein Apple-Skript, das über das Kontextmenü Dienste ausgeführt wird, folgendermaßen zu formatieren:

  1. Wählen Sie mit dem Cursor „Text“ aus
  2. Kontextmenü/Dienste auswählen Spacing (wird erstellt)
  3. ausgewählter Text wird zu "TEX T" formatiert

Hat jemand das Knowhow, um ein solches Skript zu programmieren?

Sie können auch einfach den Buchstabenabstand vergrößern.

Antworten (2)

AppleScript zum Erweitern von Text

Das folgende AppleScript-Snippet fügt ein Leerzeichen zwischen jedem Zeichen einer Zeichenfolge hinzu. Kopieren Sie diesen Code und fügen Sie ihn unter Anwendungen > Dienstprogramme > Skripteditor ein , um ihn auszuprobieren:

set myText to "hello world"
set myResult to ""

repeat with c in every character in myText
    set myResult to myResult & " " & c
end repeat

display dialog myResult

Automator-Dienst

Mit diesem Skript können Sie Anwendungen > Automator verwenden, um Ihren Kontextmenüdienst zu erstellen.

Automator-Workflow zum Erweitern von ausgewähltem Text

Neuer Texterweiterungsdienst in TextEdit

  1. Starten Sie Automator.app
  2. Erstellen Sie einen neuen Workflow, wählen Sie Service aus
  3. Fügen Sie eine Aktion „AppleScript ausführen“ hinzu
  4. Kopieren Sie das Skript und fügen Sie es ein:

    on run {input, parameters}
    
        set myText to input as string
        set myResult to ""
    
        repeat with c in every character in myText
            set myResult to ((myResult & " " & c) as string)
        end repeat
    
        -- Convert to upper case using `tr`
        set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"
    
        return myResult
    end run
    
  5. Ausgabe auswählen ersetzt ausgewählten Text

  6. Speichern und testen Sie Ihren neuen Dienst
Hast du das getestet? Ich frage, weil dies bei mir in TextEdit unter OS X 10.8.5 und TextEdit unter OSX 10.10.4 nicht funktioniert. Oder mit oder TextWrangler unter OS X 10.8.5 wird der Dienst überhaupt nicht angezeigt. Es ist keine große Sache für mich, da ich keinen Grund habe, Text mit doppeltem Leerzeichen zu schreiben, aber das, was Sie präsentiert haben, funktioniert auf meinen Systemen nicht.
vielen Dank für deine schnelle und passende Antwort! Ich habe es versucht, aber das Problem ist, dass der ausgewählte Text nicht übernommen wird. Wenn ich myText auf "asdkfsafg" setze, funktioniert es perfekt. Wenn ich es mit set myText to input verwende, bekomme ich Fehlermeldungen oder der ausgewählte Text wird gelöscht. Der Eingabeparameter in Automator ist Text und jedes Programm. Was läuft schief?
@ user3439894, es scheint, dass wir das gleiche Verhalten haben
@ user139574 Ich habe das AppleScript unter OS X 10.10.4 getestet, aber nicht den Dienst. Welche Fehlermeldung sehen Sie? Haben Sie versucht, andere Dienste mit Automator zu erstellen? Was passiert, wenn der Dienst eine statische Zeichenfolge wie z return "test". B. anstelle von zurückgibt return myResult?
Die Fehlermeldung von text edit lautet: Der Dienst ... funktioniert nicht, weil der Dienst ... keine gültigen Daten liefert. Die Rückgabe einer statischen Zeichenfolge funktioniert
Wenn man das Skript den Eingabestring gleich am Anfang ausgeben lässt, ist es richtig. Es scheint also so zu sein, dass ein falsches Datenformat dadurch verursacht wird, dass "repeat with c in every character in myText set myResult to myResult & " " & c end repeat" diesen Sinn macht
Ich habe das Skript aktualisiert; die Zeile ändern set myText to input as string. Die as stringscheint erforderlich zu sein. Ich habe auch die myResultVerkettung typisiert, um sicherzustellen, dass sie ein Zeichenfolgentyp bleibt. Dies funktioniert jetzt unter OS X 10.10.4 als Dienst.
Ja, es funktioniert ;-) Eine letzte Frage: Wie lautet der Befehl, um alle Buchstaben in Großbuchstaben umzuwandeln?
@Graham Miln, es funktioniert jetzt für mich in drei verschiedenen Apps, in denen ich es verwenden würde, wenn ich es brauche. Obwohl ich dieses spezielle Szenario nicht brauche, habe ich dennoch etwas Nützliches mitgenommen, also +1 hier.
@ user139574 Das Konvertieren von Zeichenfolgen in Großbuchstaben mit AppleScript wird hier besprochen: mindingthegaps.com/blog/2011/05/26/…

Um den ausgewählten Text in Großbuchstaben umzuwandeln und zwischen jedem Zeichen ein Leerzeichen hinzuzufügen, fügen Sie die folgende Zeile zum Skript hinzu, das von Graham Miln gepostet wurde.

set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"

In Automator wäre es also:

on run {input, parameters}

    set myText to input as string
    set myResult to ""

    repeat with c in every character in myText
        set myResult to ((myResult & " " & c) as string)
    end repeat

    set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"

    return myResult

end run
Vielen Dank für diesen Vorschlag. Ich habe deine trZeile in das Skript eingebaut.
@ Graham Miln, kein Problem. Ich hätte Ihre Antwort direkt bearbeitet, da dies jedoch auf verschiedene Arten möglich ist, habe ich beschlossen, sie als separate Antwort zu veröffentlichen, da Sie den Großbuchstabenteil seiner Anfrage des OP nur als Link in einem Kommentar zu Ihrer Antwort angesprochen haben.