It seems that a lot of people are looking for sample code that shows how to use appscript together with an AppleScript droplet, which acts on Finder items dropped onto its icon.
The easiest way to do this is to write a generic AppleScript droplet that creates a large string containing the quoted Posix paths of all dropped items and then executes a Python/Ruby script located in the application bundle with the generated item paths passed as arguments.
That might sound complicated, and so I have created a small sample script which you can download and then test and inspect on your Mac. Please note, that you need to have py-appscript installed to successfully test it:
The sample script does nothing special, it just sets the color label of dropped Finder items to a random color using the py-appscript module. If an item already has a color label, the label is reset to colorless, so that you can easily clean up the mess afterwards.
Of course, the principal is the same for Ruby scripts using the rb-appscript module.
Important: Opening and saving the below script code in Script Editor won’t result in a usable AppleScript! That is because the presented AppleScript internally relies on a Python script, which is located inside its Application bundle. Therefor please download the complete script here.
This is the AppleScript droplet code that iterates over the dropped Finder items:
property mytitle : "dropycol"
on open dropitems
try
-- creating a large string containing all the
-- quoted Posix paths of the dropped items
set strfilepaths to ""
set countdropitems to length of dropitems
repeat with i from 1 to countdropitems
set dropitempath to (item i of dropitems) as Unicode text
if i is equal to dropitems then
set strfilepaths to strfilepaths & quoted form of (POSIX path of dropitempath)
else
set strfilepaths to strfilepaths & quoted form of (POSIX path of dropitempath) & space
end if
end repeat
-- getting the path to the Python script inside the AppleScript bundle
set mypath to ((path to me) as Unicode text)
set pyscriptpath to quoted form of (POSIX path of (mypath & "Contents:Resources:dropycol.py"))
-- executing the Python script with the item paths passed as arguments
set cmd to "python" & space & pyscriptpath & space & strfilepaths
set cmd to cmd as «class utf8»
set shellresult to do shell script cmd
-- catching unexpected errors
on error errmsg number errnum
tell me
activate
display dialog "Sorry, an error occured:" & return & return & errmsg & " (" & errnum & ")" buttons {"OK"} default button 1 with icon stop with title mytitle
end tell
end try
end open
This is the code of the Python script using appscript to set/reset the color label of Finder items.