Ausgabe
Ich versuche, eine Code-Assembly zu erstellen, um mein eigenes Applescript zu erstellen, um ein Bild in Photoshop zu erstellen, aber leider habe ich einen Fehler und kann nicht finden, woher er kommt.
Der erste Teil des Skripts funktioniert, das zufällige Bild wird gut in die Zwischenablage kopiert, aber der Rest ist problematisch.
-- Select random image
tell application "Finder"
set bg_img to file (random number from 1 to (count files of folder "HD:Works:Club:LAYERS:0-BG")) of folder "HD:Works:Club:LAYERS:0-BG"
end tell
tell application "Preview"
activate
open bg_img
end tell
-- Select and copy image to clipboard
tell application "System Events"
tell process "Preview"
keystroke "a" using command down
keystroke "c" using command down
end tell
end tell
-- Quit Preview Application
tell application "Preview" to quit
tell application "Adobe Photoshop 2022"
-- Create a new document
set docRef to make new document with properties {width:1200, height:1200, resolution:72}
tell docRef
-- Unlock the background layer and fill it with gray color
set background layer of layer 1 of docRef to false
fill selection with contents {class:RGB color, red:200, green:200, blue:200}
end tell
end tell
-- Paste image to new layer
tell application "System Events"
tell process "Adobe Photoshop 2022"
set newLayer to make art layer with properties {name:"LayerA"}
keystroke "v" using command down
end tell
end tell
Lösung
Ok, ein Kompilierungsfehler; Ich hab es jetzt. Versuche dies:
-- Paste image to new layer
tell application "Adobe Photoshop 2022"
activate
set newLayer to make art layer with properties {name:"LayerA"}
end tell
tell application "System Events"
tell process "Adobe Photoshop 2022"
keystroke "v" using command down
end tell
end tell
Denken Sie daran, dass Sie einen tell application "NAME" … end tell
Block verwenden, um 1. AppleScript mitzuteilen, an welche App Befehle gesendet werden sollen, und 2. die App, von der die benutzerdefinierte Terminologie (Schlüsselwörter) für Befehle und Objekte abgerufen werden sollen.
Daher tell application "System Events"…end tell
verwendet Ihr Block SE-Terminologie und -Befehle. Der tell process "Photoshop"…end tell
darin enthaltene Block ist immer noch an Systemereignisse adressiert. process
ist ein SE-definiertes Schlüsselwort für ein SE-spezifisches Objekt. Ebenso keystroke
ist ein SE-spezifischer Befehl.
Für make
ein neues art layer
in Photoshop müssen Sie diesen Befehl in einen eigenen tell application
Block einfügen, der auf PS abzielt.
Ja, AppleScript ist oft verwirrend. Und Systemereignisse sind 10-mal verwirrender als das, da nicht offensichtlich ist, was GUI-Skripting ist und was nicht. Viel Glück.
—
ps Ich habe das Gefühl, dass der tell process
Block völlig überflüssig ist und nur erforderlich ist, wenn GUI-Skripte verwendet werden, um die Fenster einer App zu manipulieren. IIRC Der keystroke
Befehl weiß nicht oder kümmert sich nicht darum, welche App diese Tasten erhält. In diesem Fall ist es wichtig, dass Sie Photoshop aktivieren, bevor Sie mit dem „Drücken“ der Tasten beginnen. Ich überlasse es Ihnen zu entscheiden, ob Sie die tell process
.
pps AppleScriptfähige Apps enthalten normalerweise keine cut
und paste
-Befehle, normalerweise, weil sie bereits weitaus bessere Möglichkeiten zum Abrufen und Einstellen von Inhalten bieten. Photoshop hingegen schon. Wenn Sie es also noch nicht ausprobiert haben, versuchen Sie, einen paste
Befehl am Ende Ihres „Tell Photoshop“-Blocks einzufügen, kommentieren Sie dann den „Tell System Events“-Block aus und sehen Sie, ob das für Sie funktioniert. Wenn ja, können Sie diesen Systemereignisblock vollständig entfernen!
ppps Es lohnt sich auch, das Wörterbuch von PS weiter zu untersuchen, um zu sehen, ob es Ihre „bg_file“ direkt öffnen und platzieren kann. Wenn dies der Fall ist, können Sie die „Tell-Vorschau“ und den Rest dieser Schrecklichkeit von Systemereignissen ebenfalls eliminieren !!
Beantwortet von – foo
Antwort geprüft von – Gilberto Lyons (FixError Admin)