[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

mdomino
Beiträge gesamt: 76

18. Nov 2015, 03:30
Beitrag # 1 von 8
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Scripter,

ich bin hier bald vollkommen frustriert, weil mal wieder überhaupt nichts funktionieren will. Vielleicht hat hier einer die rettende Idee.

Ich möchte schlicht und einfach ein appleScript.scpt mittels app.doScript() ausführen. Wenn ich das Script ausführe ohne Argumente funktioniert das auch einwandfrei. Wenn ich jedoch als dritten Parameter versuche Argumente zu übergeben, tritt ein Fehler auf.

Hier ist mein aufs simpelste reduzierte Setup:
Code
var myArgArray = ["arg1", "arg2"]; 
var appleScript = File('~/mein/Pfad/appleScript.scpt');

app.doScript(appleScript, ScriptLanguage.applescriptLanguage, myArgArray);



Die Fehlermeldung, die mir ausgegeben wird, lautet folgendermaßen:

Code
„arguments of «handler run»“ kann nicht als „{"arg1", "arg2"}“ gesetzt werden. (-10006) 


Ist irgendwie mein Array falsch formatiert?
Ist das schon mal bei jemandem aufgetreten?

Wäre über Hilfe sehr dankbar!

Viele Grüße, MD
X

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

Martin Fischer
  
Beiträge gesamt: 12494

18. Nov 2015, 09:58
Beitrag # 2 von 8
Beitrag ID: #544699
Bewertung:
(2807 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo MD,

wie werden Deine Argumente im AppleScript aufgenommen?

Hier ein einfaches Beispiel für den Aufruf eines Applescripts mit doScript() mit Argumenten:

Code
var myArgArray = ["arg1", "arg2"]; 
var myAppleScript = "display dialog(\"Erstes Argument: \" & item 1 of arguments & return & \"Zweites Argument: \" & item 2 of arguments)";
app.doScript(myAppleScript, ScriptLanguage.applescriptLanguage, myArgArray);


Viele Grüße
Martin




als Antwort auf: [#544696]

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

mdomino
Beiträge gesamt: 76

18. Nov 2015, 10:50
Beitrag # 3 von 8
Beitrag ID: #544702
Bewertung:
(2790 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
danke zunächst für deine Antwort.
Das von dir gezeigte Beispiel funktioniert tatsächlich.

Wenn ich das Ganze allerdings als "externe" Apple-Script-Datei einbinde, bekomme ich den gleichen Fehler wie zuvor.

Mein Extend-Script-Code bleibt also gleich und mein Apple Script Code lautet dann schlicht:

Code
display dialog("Erstes Argument: " & item 1 of arguments & return & "Zweites Argument: " & item 2 of arguments) 


Alternativ habe ich versucht erst mal nur die Argumente entgegenzunehmen:

Code
set arg1 to item 1 of arguments 
set arg2 to item 2 of arguments

display dialog("Erstes Argument: " & arg1 & return & "Zweites Argument: " & arg2)


Das hat beides nicht funktioniert, die Fehlermeldung ist abermals

Code
„arguments of «handler run»“ kann nicht als „{"arg1", "arg2"}“ gesetzt werden. (-10006) 


Ist die Übergabe von Argumenten demnach nur möglich, wenn ich das gesamte Script als Stringvariable an app.doScript() übergebe?


Danke und Grüße, MD


als Antwort auf: [#544699]

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

Martin Fischer
  
Beiträge gesamt: 12494

18. Nov 2015, 11:15
Beitrag # 4 von 8
Beitrag ID: #544703
Bewertung:
(2780 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo MD,

wie hast Du das AppleScript gespeichert?
Nur als reine TXT-Datei?
Damit kann ich Deinen Fehler nachstellen.

Oder über den AppleScript-Editor im Skript-Format (s. Anhang)?
Damit funktioniert es bei mir.


Alternativ – falls Du das AppleScript nicht im Skript-Format sichern kannst – sollte es möglich sein, den Inhalt der Textdatei auszulesen, Anführungszeichen und RETURNs (und vielleicht noch Anderes) zu escapen und dann als String dem doScript()-Befehl zu übergeben.

Viele Grüße
Martin




als Antwort auf: [#544702]
(Dieser Beitrag wurde von Martin Fischer am 18. Nov 2015, 11:23 geändert)

Anhang:
appleScript.scpt (0.89 KB)

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

mdomino
Beiträge gesamt: 76

18. Nov 2015, 12:26
Beitrag # 5 von 8
Beitrag ID: #544707
Bewertung:
(2747 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oha, ich glaube damit hast du ins Schwarze getroffen.

Habe das Script im Sublime Texteditor erstellt, natürlich mit .scpt-Datei-Endung und auch schön AppleScript-Syntax-Hightlighting, und das hat mich zur Annahme verleitet, dass es sich um ein reguläres AppleScript handelt. (Zumal es ja ohne Argumente tatsächlich funktioniert hat.)

Es scheint aber tatsächlich eine verkappte Text-Datei mit .scpt-Endung zu sein, denn wenn ich deine appleScript-Datei in Sublime öffne sehe ich nur "Binärcode" (keine Ahnung, ob man das so nennt).

Wenn ich mein Script jetzt noch mal im AppleScript-Editor erstelle funktioniert es tatsächlich.

Vielen, vielen Dank, du hast mir den Tag gerettet! :)

Grüße, MDomino


als Antwort auf: [#544703]

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

mdomino
Beiträge gesamt: 76

18. Nov 2015, 14:07
Beitrag # 6 von 8
Beitrag ID: #544711
Bewertung:
(2708 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Und wo ich gerade schon mal einen Experten an der Angel habe würde ich gerne noch eine damit verbundene Frage nachschieben.

Was ich nämlich eigentlich versuche ist, dass ich ein Python-Script aus InDesign heraus ausführe. Das habe ich jetzt halt über den Weg InDesign -> AppleScript -> Python gemacht.

Da gibt es nicht zufällig einen eleganteren Weg, den ich hier übersehe? Ich komme mir nämlich schon ein wenig bekloppt vor, ich übergebe Argumente an ein AppleScript, nur damit dieses dann die Argumente an ein Python-Script weitergeben kann. ;)

Das Prinzip funktioniert jetzt jedenfalls, aber falls es da einen direkteren und somit eleganteren Weg gäbe, hätte ich da natürlich auch nichts gegen.

Danke und Grüße, MD


als Antwort auf: [#544707]

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

Martin Fischer
  
Beiträge gesamt: 12494

18. Nov 2015, 14:37
Beitrag # 7 von 8
Beitrag ID: #544714
Bewertung:
(2699 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo MD,

Antwort auf: Was ich nämlich eigentlich versuche ist, dass ich ein Python-Script aus InDesign heraus ausführe. Das habe ich jetzt halt über den Weg InDesign -> AppleScript -> Python gemacht.


Das kenne ich gut.
Habe so etwas Ähnliches mal wg. Shell-Kommandos konstruiert.
Ein JavaScript, das ein AppleScript mit einem Shell-Skript ausführt.
Das gibt bisweilen einen harten K(r)ampf mit Anführungs- und Escape-Zeichen. ;-)

Ich fürchte, es gibt keinen einfacheren Weg.

Aber vielleicht kennt jemand Anderer noch eine elegantere Lösung.

Viele Grüße
Martin




als Antwort auf: [#544711]

Wie kann ich mittels app.doScript() ein AppleScript *mit* Argumenten ausführen?

mdomino
Beiträge gesamt: 76

18. Nov 2015, 15:18
Beitrag # 8 von 8
Beitrag ID: #544718
Bewertung:
(2674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Das gibt bisweilen einen harten K(r)ampf mit Anführungs- und Escape-Zeichen. ;-)


Deshalb wollt ich erreichen, dass ich das AppleScript als Datei aufrufen kann und nicht als String, damit dieser K(r)ampf erst in der AppleScript-Datei selbst losgeht und nicht schon in JavaScript. ;-)

Vielleicht noch ein weiteres "unkonventionelles" Detail meines Workflows:
Ich habe vor zu überprüfen, ob die Python-Datei fertig gelaufen ist, indem ich am Ende des Python-Scripts eine leere Textdatei "end.txt" rausschreibe und den JavaScript-Teil währenddessen in eine while-Schleife schicke, die so lange läuft, bis sie diese "end.txt"-Datei vorfindet (oder ein TimeOut-Limit erreicht wird). Wenn da noch jemandem etwas Eleganteres einfällt, bin ich ganz Ohr. :-D


als Antwort auf: [#544714]
X

Aktuell

PDF / Print
PDF-XCange_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
09.09.2021 - 17.12.2021

Digicomp Academy, Zürich
Donnerstag, 09. Sept. 2021, 13.00 Uhr - Freitag, 17. Dez. 2021, 19.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von Publishing NETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: 6'300.– zzgl. 7.7% MWST
Dauer: 18 Tage(ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberater AT digicomp DOT ch