Обработчик действий с папками завершится с ошибкой, поэтому в случае ошибки скрипт будет прерван. В размещенном вами сценарии вы вообще не просматриваете добавленные элементы и используете неопределенную переменную - eachitem . Также обратите внимание, что при использовании оператора try без части on error будут просто устранены все ошибки, которые также не помогают при отладке. Я знаю, что вы используете один из примеров сценариев Apple, но он довольно старый.
Я обнаружил, что лучший подход при использовании действий с папками - это поместить основные части скрипта за пределы обработчика действий с папками, чтобы его можно было нормально запускать (скрипт не нужно предназначен только для действия с папкой) - это помогает при отладке, а также может дать вам апплет или каплю. Для тестирования вы также можете закомментировать объявление обработчика действия папки и добавить операторы для получения папки и файлов.
Надеюсь, вы не возражаете, но я позволил себе перестроить ваш скрипт, чтобы его можно было запустить из редактора скриптов:
property Docs : "Macintosh HD:Users:Max:Downloads:Docs"
property Music : "Macintosh HD:Users:Max:Downloads:Music"
property Videos : "Macintosh HD:Users:Max:Downloads:Videos"
property Images : "Macintosh HD:Users:Max:Downloads:Images"
property Profiles : "Macintosh HD:Users:Max:Downloads:iPhone:Profiles"
property Zips : "Macintosh HD:Users:Max:Downloads:Zips"
property PSDs : "Macintosh HD:Users:Max:Downloads:PSDs"
property dialogTimeout : 10
on run -- script run as an application or from the Script Editor
set someFiles to (choose file with multiple selections allowed) -- manually get some files
tell application "Finder" to set containingFolder to (container of first item of someFiles) as alias
doStuff(containingFolder, someFiles)
end run
on adding folder items to this_folder after receiving added_items -- folder action handler
doStuff(this_folder, added_items)
end adding folder items to
on doStuff(theFolder, theStuff) -- do stuff with file items in a folder
set numberOfItems to (count theStuff)
tell application "Finder"
set folderName to name of theFolder
repeat with anItem in theStuff
if name extension of anItem is in {"png", "jpg", "jpeg", "gif"} then
move anItem to folder Images
else if name extension of anItem is in {"mov", "avi", "wma", "m4v"} then
move anItem to folder Videos
else if name extension of anItem is in {"mp4", "mp3", "wav", "wma"} then
move anItem to folder Music
else if name extension of anItem is in {"pdf", "doc", "docx", "pages", "ppt", "pptx"} then
move anItem to folder Docs
else if name extension of anItem is in {"mobileprovision"} then
move anItem to folder Profiles
else if name extension of anItem is in {"zip"} then
move anItem to folder Zips
else if name extension of anItem is in {"psd"} then
move anItem to folder PSDs
else
-- no match, so leave it
end if
end repeat
end tell
-- create the alert string
set alertText to ("Folder Actions Alert:" & return & return) as Unicode text
if numberOfItems is greater than 1 then
set alertText to alertText & numberOfItems & " new items have "
set plural to "s"
else
set alertText to alertText & "One new item has "
set plural to ""
end if
set alertText to alertText & "been added to the folder " & «data utxt201C» & folderName & «data utxt201D» & "."
set alertText to alertText & return & return & "Would you like to view the added item" & plural & "?"
display dialog alertText buttons {"Yes", "No"} default button 2 with icon 1 giving up after dialogTimeout
if (button returned of the result) is "Yes" then tell application "Finder"
activate
-- open theFolder
reveal theStuff
end tell
end doStuff