Quellcode für die Zeichenfolge in der Variablen

1

Im AppleScript Editor kann ich sehen, dass source_code Skriptinhalt hat, aber Zeile 2 aus irgendeinem Grund fehlschlägt.

set source_code to load script (POSIX file "/path/to/script.scpt")
word 2 of source_code

Das geht nicht. Ich versuche, AppleScript-Dateien in Variable zu lesen.

Ich versuche nicht, diesen geladenen Code auszuführen, aber ich muss ihn als Zeichenfolge abrufen.


Es scheint zu scheitern, weil source_code nicht string, sondern «script» ist. Wie kann das behoben werden? Vielen Dank

set source_code to load script (POSIX file "/path/to/script.scpt")
word 2 of (source_code as string) -->error "Can’t make «script» into type string." number -1700 from «script» to string
word 2 of source_code -->error "Can’t get word 2." number -1728 from word 2
ps22
quelle
So funktioniert die erste Zeile ( set source_code ... ) aber der zweite nicht? Was erwartest du von der zweiten Zeile genau?
nohillside
Ich erwarte das zweite Wort im Quellcode. Vielen Dank
ps22

Antworten:

2

Das load script Der Befehl lädt ein Skript als auszuführendes Objekt und nicht als zu lesenden oder zu bearbeitenden Text.

Wenn Sie auf den eigentlichen Text Ihres Skripts zugreifen möchten, können Sie osadecompile verwenden:

do shell script "osadecompile ~/Library/Scripts/test.scpt"
word 2 of result

Mit AppleScript Editor gespeicherte kompilierte Skripts haben normalerweise LF-Zeilenenden in Zeichenfolgen, CR-Zeilenenden an anderen Stellen. osadecompile konvertiert alle Zeilenenden in LF. do shell script konvertiert Zeilenenden in CR, sofern Sie kein without altering line endings Bezeichner.

Lri
quelle
Cool, das funktioniert! Vielen Dank, Lauri Ranta. Gibt es eine Möglichkeit, Text in der Beschreibung unten im AppleScript Editor-Fenster abzurufen?
1
Sie könnten eine andere Frage stellen. Die Beschreibung wird in der Ressourcengabel gespeichert ( cat Untitled.scpt/..namedfork/rsrc / xattr -p com.apple.ResourceFork Untitled.scpt | xxd -r -p ) und es ist eigentlich Rich-Text, aber ich weiß nicht, wie ich es in RTF oder Nur-Text konvertieren soll.
Lri