Shell- eller AppleScript för att starta PhotoShop droplet

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1

Jag vill starta en PhotoShop droplet när man lägger en fil i en mapp.

Tittar man på en droplet så har den ju type/creator APPL/8BDR. Men jag lyckas inte starta den från en commandorad.

Jag är värdelös på AppleScript och då jag även kommer att automatisera lite andra grunkor via egna c-program så vore det smidigaste om jag kunde anropa dropleten från en kommandorad.

Men jag skulle kunna acceptera en lösning där ett AppleScript startar dropleten när det finns en fil i en viss mapp.

Goda tips efterfrågas...

  • Medlem
  • 2003-07-21 14:58

Jag provade en Folder Actions lösning med Applescript:
Under Library/Scripts/Folder Actions

starta Folder Actions genom att starta
Enable Folder Actions.scpt

kör sedan scriptet:
Attach Script to Folder.scpt

Gör nu ett litet Applescript med Manusredigaren som ser ut typ såhär:

on adding folder items to this_folder after receiving added_items
try
tell application "Namnet på din droplet.exe" to open

end try
end adding folder items to

(Dom två första raderna tog jag ifrån
scriptet: add - new item alert.scpt
i mappen Library/Scripts/Folder Action Scripts där du även spar ner ditt script ovan!)

Kör nu scriptet: Library/Scripts/Folder Actions/Attach Script to Folder.scpt

välj då ditt egna script samt peka ut mappen du vill ska bevakas!

Lycka till! Detta är ju något som Apple med kommer att förenkla med kommande 10.3 så det är värt att kika på!

Micke

Tack för ditt svar. Fungerade halvvägs. Photoshop startar men jag får inte med innehållet från mappen.

Har nu valt en helt annan lösning baserad på Photoshop under Windows, jag skäms och ber om ursäkt, och där blir en droplet ett ”fristående” exe-program. Detta gör dock att jag med min kunskap lättare kan skapa automatik via c-program och batchfiler.

mvh
BitBLT

Det du vill göra går att göra i Mac OS med Photoshop ochy Applescript.

Stödet för Applescript i Photoshop är dock begränsat till att köra de action-script som man kan definiera i Photoshop självt. Så listan med Applescript-kommandon som Photoshop förstår är alltså ganska kort, men ett av dem är något i stil med "run action XXX". Men from version 7 så skall det vara lättare.

Två tidigare trådar om Applescript och Photoshop
http://www.99mac.com/forum/showthread.php?s=&threadid=8785

http://www.99mac.com/forum/showthread.php?s=&threadid=25053

Så vad du skall göra är ungefär följande:

1. Skapa en action i Photoshop och spara den.

2. Skapa ett script som kör denna action på den filen som är öppen i Photoshop. Det scriptet behöver bestå av stegen:

* aktivera Photoshop
* öppna referensen till filen
* kör din action
* spara och stäng

3. Omge det scriptet med en "handler" så att man kan knyta scriptet till en mapp (via folder actions som beskrivs ovan) och som loopar igenom alla filer man släppt i en mapp och som avslutning flyttar processade filer till en annan mapp. Se nedan för ett förslag.

4. Knyta scriptet till en mapp, via folder actions.

När man nu släpper filer i mappen så kommer de att processas av Applescript och Photoshop.

Du kan inte skapa ett exekverbart Applescript genom att byta typ på det heller. I Manusredigerare (där du skapar och testar script) så väljer du "Spara som" och som typ anger du "Program" och sätter de kryss nedanför du tycker är lämpliga. För att en Applescript-applikation du skapat på det viset skall fungera som en droplet (att du kan dra och släppa saker på den) måste den innehålla en två sk "handlers" som är samma sak som subrutiner. Se mitt nästa inlägg för ett exempel.

Det går även utmärkt att skapa flera separat applescript-applikationer som pratar med varandra och dessutom byter data med varann. Har du skapat en applikation som heter "DoScriptInPhotoshop.app" och vill köra den via ett script så använder du:

set scriptname to "Sudda till"
tell application "DoScriptInPhotoshop.app"
doscript (scriptname)
end tell

I applikationen har du då ett script som ser ut så här:

on doscript(scriptname)
tell application "Photoshop"
doscript scriptname
end tell
end tell

Har inte testat ovanstående, men sådan är principen.

ML: Sedan kan jag tillägga att på Mac förekommer inte filändelsen ".exe" för att ange att något är ett programm, men ".app" förekommer och är samma sak. Rätta mig om jag har fel.

BitBLT: Sedan förstår jag tyvärr inte vad du menar med att du vill anropa dropleten från en kommando-rad.

Så för att sammanfatta:
* Du kan få script att köras då saker släpps i en mapp, detta kallas Folder Actions och du knyter ett script till en folder genom att använda dig av script som ligger här:

Hårddisk: Library: Scripts: Folder Actions: Attach Script to Folder.sct

Du måste ha med en handler i scriptet som är on "adding folder items to this_folder after receiving added_items"

* Du kan få script att köras du saker släpps på ett script, detta kallas Droplets. Du skapar en Droplet genom att dels ha med en handler "On open" i scriptet och dels spara det som en applikation inifrån "Manusredigeraren".

* Du kan få script att köras genom att dubbelklicka på en applikation. Samma princip som punkten före denna, förutom att handlern skall heta "om run".

Lycka till!

/Ola

(*
UNLOCK ITEMS DROPPED ON IT
----------------------------------------------------------------
Av: Intelligent Mammals HB, 2002-10-14
Ola@intelligentmammals.se
http://www.intelligentmammals.se/

Detta manus låser upp alla filer som finns i de filer/mappar
man släpper på det eller som finns i den mapp man pekar
på. Det fungerar alltså både genom "drag and drop" och
genom att man dubbelklickar på det.

*)

(*
Om vi har släppt en massa filer och mappar på en
applet vi skapat av detta script så finns dem i
variabeln "fileList" som är av typen lista.
Denna variabel skickar vi till rutinen parseFiles.
*)
on open fileList
parseFiles(fileList) of me
end open

(*
Om vi har dubbelklickat på en applet av detta script
så får vi här istället upp en dialogruta för att välja
en mapp. När vi gjort det så finns en folder i variabeln
theFolderToParse. Vi skickar den mappen till rutinen
parseFolder.
*)
on run
choose folder
set theFolderToParse to the result
parseFolder(theFolderToParse)
end run

(*
Här tar vi ett objekt i taget och först kollar vi
om det är en mapp och om det är det så skickar vi
mappen till parseFolder. Annars är det en fil och
då låser vi upp den.
*)
on parseFiles(fileList)
tell application "Finder"
repeat with listItems in fileList
(*
Här kollar vi om objektet är en mapp
i så fall skickar vi det till en subrutin
för att få en lista på filer och mappar i
objektet.
*)
if kind of listItems is "mapp" then
set theFolderToParse to listItems
parseFolder(theFolderToParse) of me
else
(*
Här låser vi upp filen.
*)
set itemToUnlock to listItems
set locked of listItems to false
end if
end repeat
end tell
end parseFiles

(*
Kommer vi hit så har scriptet hittat en mapp. I så fall
så tar vi alla objekt i den mappen och skickar dessa
till parseFiles.
*)
on parseFolder(theFolderToParse)
tell application "Finder"
set newFileList to the items of theFolderToParse
parseFiles(newFileList) of me
end tell
end parseFolder

  • Medlem
  • 2003-07-23 16:00

Taz_1999
Självklart förkommer ju bara .exe på den där andra plattformen.
Vi använder naturligtvis .app!

Men när man är lat och kollar bara i Photoshop 7 mappen (på en Mac) och sen
under mappen Exempel->Droplet->så hittar man droplet med ändelsen .exe,

Nu vet jag inte om Adobe har slarvat, men jag kopierade bara filnamnet därifrån, eller om Adobe gjort det med flit för kanske är det så att vissa droplets funkar plattformsoberonde kanske, någon som har testat?

Micke

Från och med version 7 så Photoshop väldigt scriptbart. Tänk dock på att scriptingstödet installeras separat. På CD-skivan finns också en omfattande dokumentation och exempelscript. Hämta också hem uppgraderingar från www.adobe.com/support/downloads/ för att få det att funka så bra som möjligt.

Även äldre versioner har möjlighet att trigga ett funktionsmakro via script genom att använda "do script"-kommandot

När det gäller "droplets" så är det så att de iofs inte är plattformsoberoende, men att Photoshop själv kan konvertera dem mellan plattformarna. Om jag minns rätt så drar man helt enkelt droplet-filen och släpper på Photoshops programikon så konverteras den till PC/Mac

1
Bevaka tråden