Aus Photoshop kann man eine Aktion als Droplet ablegen, alle Bilder die ich auf dieses Droplet ziehe, werden entsprechend der Aktion abgearbeitet.
Meine Frage: Kann man ein Photoshop-Droplet in ein AppleSkript integrieren?
Ich würde gern per IN und OUT Ordner Photoshop-Droplets ausführen, d.h. sobald ein Bild im IN-Ordner erscheint soll das Droplet starten und das abgearbeitete Bild im OUT-Ordner abgelegt werden.
welche Version von Photoshop benutzt Du? Und unter welchem Mac OS?
Ich habe null Erfahrung mit Photoshop-Aktionen. Ich musste mich also zuerst etwas schlau machen. Und ich schaffte es tatsächlich, mit Photoshop 6.01 ein Droplet zu erzeugen, welches eine Aktion ausführt...
Nun ist aber ein Droplet und ein überwachter Ordner nicht kombinierbar. Man muss deshalb im Ordneraktions-Script den Befehl zu Ausführen der Photoshop-Aktion integrieren. Das folgende Script funktioniert mit meiner einfachen Photoshop-Aktion. Zum Glück habe ich durch Mitlesen von Diskussionen gelernt, dass die Dateien mit dem Finder geöffnet werden müssen, wenn man Photoshop 6 verwendet.
Bitte passe die Pfade zu Photoshop und zum "Out"-Ordner, sowie den Namen der Photoshop-Aktion an Deine Umgebung an. Achtung: in der Photoshop-Aktion muss dass Öffnen der Datei entfernt werden, weil dies der Finder besorgen muss. --- property PSpath : alias "Macintosh HDns (Mac OS 9):Adobe® Photoshop® 6.0.1:Adobe® Photoshop® 6.0.1" property outFolder : alias "Macintosh HD:Out:"
on adding folder items to thisFolder after receiving itemList repeat with aFile in itemList tell application "Finder" to open file aFile using PSpath tell application "Adobe® Photoshop® 6.0.1" activate do script "test_1" end tell tell application "Finder" to move file aFile to folder outFolder end repeat end adding folder items to --- Dieses Script, als kompilierte Version auf der Harddisk gesichert und an den "In"-Ordner angefügt, sollte die angegebene Aktion ausführen. Ich habe aber festgestellt, dass die Modifikations-Zeit nicht geändert wird, obwohl das Sichern in der Photoshop-Aktion integriert ist.
Hallo Hans, habe es ausprobiert, es funktioniert, nur - mal wird es einmal ausgeführt und manchmal zweimal.
(habe in der Aktion kein "Öffnen" angegeben, aber - da ich zuerst das Bild in den IN-Ordner ziehe - das Droplet wird ausgeführt - und anschl. innerhalb der Aktion wieder in den IN-Ordner sichere, ist es vielleicht doppelt gemoppelt?! habe auch probiert es innnerhalb des Droplets in den OUT-Ordner zu speichern, aber dann versucht das Skript ebenfalls das File in den OUT zu moven)
Frage: Kann man das Skript so abändern, daß nur der IN-Ordner nach Files abgefragt wird? Den OUT-Ordner könnte ich innnerhalb der Aktion festlegen.
das Script, welches Du dem In-Ordner angehängt hast, fragt nur diesen nach Files ab.
Was man ändern könnte: die Files zuerst verschieben und sie dann im Out-Ordner mit der Photoshop-Aktion behandeln lassen. Dazu muss nur die Zeile mit dem 'move'-Befehl verschoben werden: --- property PSpath : alias "Macintosh HDns (Mac OS 9):Adobe® Photoshop® 6.0.1:Adobe® Photoshop® 6.0.1" property outFolder : alias "Macintosh HD:Out:"
on adding folder items to thisFolder after receiving itemList repeat with aFile in itemList tell application "Finder" to move file aFile to folder outFolder tell application "Finder" to open file aFile using PSpath tell application "Adobe® Photoshop® 6.0.1" activate do script "test_1" end tell end repeat end adding folder items to property outFolder : alias "Macintosh HD:Out:"
on adding folder items to thisFolder after receiving itemList repeat with aFile in itemList tell application "Finder" to move file aFile to folder outFolder tell application "Adobe® Photoshop® 7.0" activate open file aFile do script "test_1" end tell end repeat end adding folder items to --- Ich hoffe, dass es so funktioniert.
Hallo Hans, dein erstes Skript funktioniert am besten bei den zwei nächsten Skripts bekomme ich Fehler -2807 + -52
property PSpath : alias "System HDns (Mac OS 9):Adobe Photoshop 7:Adobe Photoshop 7.0:" property outFolder : alias "System HD:Out:"
on adding folder items to thisFolder after receiving itemList repeat with aFile in itemList tell application "Finder" to open file aFile using PSpath tell application "Adobe Photoshop 7.0" activate do script "test_1" end tell
-- entweder hier
tell application "Finder" to move file aFile to folder outFolder
-- oder hier wird manchmal das Bild ein zweites mal aktiviert
end repeat end adding folder items to
aber ich will Dir keinen Stress machen, ich kann ja im "Handbetrieb" die Daten aufs Droplet ziehen.
ja da ist guter Rat teuer. Bei mir funktionieren alle drei Scripts problemlos.
Versuche, den Problemverursacher zu finden, indem Du im Script 2 die an Photoshop gerichteten Befehle deaktivierst: zwei Trennungsstriche (= --) vor der Zeile einsetzen, Syntax prüfen, sichern. Dann eine Bild-Datei in den In-Ordner ziehen. Wird die Datei nun in den Out-Ordner verschoben? Dann den Befehl zum Öffnen der Datei wieder aktivieren (die beiden Trennungsstriche wegmachen). Und so weiter.
Versuche auch, eine ganz einfache Aktion einzusetzen. Nur den Modus wechseln (z.B. von Graustufen auf CMYK) und sichern.
Übrigens: welche Version von AppleScript ist auf Deiner Maschine installiert? Zwei Methoden, um dies herauszufinden. 1) Im Ordner "Systemerweiterungen" die Datei "AppleScript" auswählen. Dann mit Befehl-I das Informationsfenster öffnen. Wenn die Versionszeile die Zahl 1.7 enthält, dann kann das AppleScript-System nicht vernünftig benutzt werden. 2) Die gleiche Information erhält man, wenn im Fenster des Skripteditors das Wort "version" eingetippt wird (ohne die Anführungszeichen) und dieses Mini-Script ausgeführt wird.
Wenn also die installierte Version 1.7 ist, dann hilft nur das Downgraden auf Version 1.6. Dazu müssen nur zwei Dateien ausgetauscht werden: die Systemerweiterung "AppleScript" und die Scripting Addition "Standard Additions". Beide kann ich Dir zustellen. Das Downgraden ist problemlos. Wir haben es in unserem Betrieb bei jeder Maschine vorgenommen.
gut, dass das Script funktioniert. Hier der Versuch einer Antwort zur ersten Frage:
Das Droplet und die Ordneraktion sind zwei unabhängige Dinger, welche nur gemeinsam haben, dass sie ein Script ausführen, welches in Photoshop gespeichert ist. Es ist aber nicht das gleiche Script, weil bei der Ordneraktion das Ordneraktions-Script das Öffnen der Dateien besorgt.
Droplet: Die Dateien werden auf das Icon des Droplets gezogen und das entsprechende Photoshop-Script wird ausgeführt. Der Pfad zum Droplet muss nicht angegeben werden.
Ordneraktion: Die Dateien werden in den (offenen) Ordner gelegt, an welchem das Ordneraktions-Script angehängt ist, und das entsprechende Photoshop-Script wird ausgeführt. Der Pfad zum Droplet muss nicht angegeben werden. Das Droplet kann gelöscht werden, weil das Script, welches benötigt wird, erstens ein anderes ist, als die Droplet-Basis und zweitens in Photoshop gespeichert ist.
Aller klar? ;-)
Zur zweiten Frage. Ich gehe davon aus, dass Du die Version benutzt, in welcher die Files zuerst in den "Out"-Ordner bewegt werden, bevor das Photoshop-Script aufgerufen wird.
Die Lösung sehe ich so: das Ordneraktions-Script erweitern (statt ein zweites anzuhängen). Dazu muss lediglich der Pfad zum Ordner "Proof" definiert und am Ende der Repeat-Schleife eine Zeile eingefügt werden, welche den Finder bittet, die Datei zu kopieren. Vorgängig wird er immer aktiviert, weil das Kopieren so schneller abläuft: --- property outFolder : alias "Macintosh HD:Out:" property proofFolder : alias "Macintosh HD:Proof:"
on adding folder items to thisFolder after receiving itemList repeat with aFile in itemList tell application "Finder" to move file aFile to folder outFolder tell application "Adobe Photoshop 7.0" activate open file aFile do script "test_1" end tell tell application "Finder" to activate tell application "Finder" to duplicate file aFile to folder proofFolder end repeat end adding folder items to --- Nochmals: dieses Script als normales, kompiliertes Script auf die Harddisk speichern. Dann beim Anhängen an den "In"-Ordner diese Script-Datei auswählen. Und das Droplet vergessen. Okay?
ich stellte gerade fest, dass Photoshop, "hilfreich" wie immer, die Datei in jenen Ordner sichert, in der sich die Beispiel-Datei beim Aufzeichnen des Photoshop-Scripts befand. Je nach Arbeitsablauf kann es also mit meinem Vorschlag nicht klappen.
es hilft alles nichts: wenn in der Photoshop-Aktion nur ein normales Sichern vorgenommen wird, bleibt die Ausführung nach der ersten Datei stehen. Das gleiche geschieht, wenn man ein Sichern-Als... aufzeichnet und der Pfad nicht vollständig eingetragen wird. Wenn aber der Pfad komplett ist, dann greift die Ordner-Aktion auf die unbearbeiteten Dateien zu.
Also … das Droplet wieder hervorklauben und es um Verzeihung bitten. ;-)
Anschliessend folgendes Script als normales kompiliertes Script auf die Harddisk sichern und an jenen Ordner hängen, in welchen das Droplet die Dateien sichert: --- on adding folder items to thisFolder after receiving itemList tell application "Finder" to activate repeat with aFile in itemList tell application "Finder" to duplicate file aFile to folder "Macintosh HD:Proof:" with replacing end repeat end adding folder items to --- Die Dateien, welche Du auf das Droplet ziehst, werden mit dem definierten Photoshop-Script bearbeitet, landen im Ziel-Ordner und das Ordneraktions-Script dupliziert sie in den Ordner "Proof".
Hallo Hans, herzlichen Dank für Deine unermüdliche Ausdauer. Dein Script habe ich dem Ordner "Fertig" angehängt es funktioniert einwandfrei - der Ordner muss (wie immer) geöffnet sein - _________ on adding folder items to thisFolder after receiving itemList tell application "Finder" to activate -- ? open thisFolder ? repeat with aFile in itemList tell application "Finder" to duplicate file aFile to folder "Macintosh HD:Proof:" with replacing end repeat -- ? close thisFolder ? end adding folder items to _________ Nun, kann man im Script vor dem "duplicate" den Ordner autom. öffnen und danach wieder schliessen? ansonsten muss ich mich immer vorher vergewissern daß der Ordner offen ist.
Betreffend Deine Frage: Das Script wird nur ausgeführt wenn der Ordner offen ist. Aus diesem Grunde kann der Befehl zum Öffnen des Ordners nicht im selben Script stehen.
Eine mögliche Lösung: Dem Ordner "Fertig" ein zweites Script anhängen (ja, das kann man!), welches dafür sorgt, dass der Ordner nicht geschlossen werden kann: --- on closing folder window for thisFolder tell application "Finder" to open thisFolder end closing folder window for ---