Я новичок в AppleScript и Automator. Я изучил различные темы в Apple, но не смог найти что-то полезное.
Ну, моя проблема в том, что у меня есть папка, т.е. «работа», я применил к ней действие с папкой. При создании новой папки на «работе», т.е. «abc», я хочу создать три новые папки в «abc». Проверьте мой код
on adding folder items to this_folder after receiving added_items
tell application Finder
repeat with this_item in added_items
make new folder at this_item with properties {name:"Main"}
make new folder at this_item with properties {name:"Lower"}
make new folder at this_item with properties {name:"Upper"}
end repeat
end tell
end adding folder items to
Первое, что я вижу неправильно в вашем коде , это tell application Finder
, так как Finder
в данном случае это переменная , поскольку она не заключена в двойные кавычки. Должен быть:tell application "Finder"
Тем не менее, у вас есть теги, macos , mac , applescript и autotor , и вы не указали в OP, где и как вы применили код к целевой папкеthis_folder
в качестве действия папки . Другими словами, если вы создали действие «Папка» в Automator и имеете только этот код в качестве кода в действии «Выполнить AppleScript» , даже с двойными кавычками вокруг Finder , это не удастся. Эта структура кодирования действительна только в качестве файла AppleScript .scpt , назначенного Действие с папкой с помощью «Настройка действий с папкой...» в разделе «Службы» меню контактов в Finder .
В следующем примере кода я бы написал его как файл AppleScript .scpt , назначенный действию папки с помощью настройки действий папки... в разделе «Службы» меню контактов в Finder .
on adding folder items to this_folder after receiving added_items
try
tell application "Finder"
repeat with this_item in added_items
if (class in (get properties of this_item) as string) is "«class cfol»" then
make new folder at this_item with properties {name:"Main"}
make new folder at this_item with properties {name:"Lower"}
make new folder at this_item with properties {name:"Upper"}
end if
end repeat
end tell
end try
end adding folder items to
Обратите внимание, что несмотря на то, что при использовании try
оператора он должен принимать любые ошибки, тем не менее, я также добавил оператор, if
чтобы убедиться, что обрабатываемый элемент является папкой , а не файлом . Обратите внимание, что хотя if
оператор не является абсолютно необходимым, тем не менее, на мой взгляд, это более правильный способ написания кода , однако при желании его можно опустить .
Пользовательские файлы AppleScript .scpt для действий с папками должны быть сохранены, например:
/Users/me/Library/Scripts/Folder Action Scripts/filename.scpt
Если вы создаете действие папки с помощью Automator , то в действии «Выполнить AppleScript» используйте следующий пример code_:
on run {input, parameters}
try
tell application "Finder"
repeat with this_item in input
if (class in (get properties of this_item) as string) is "folder" then
make new folder at this_item with properties {name:"Main"}
make new folder at this_item with properties {name:"Lower"}
make new folder at this_item with properties {name:"Upper"}
end if
end repeat
end tell
end try
end run
Обратите внимание, что я протестировал оба примера блоков кода в условиях, указанных выше, и они работают так, как закодировано.
Дыши Хакер