При создании папки в указанной папке создайте подпапки в новой папке

Я новичок в 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

Ответы (1)

Первое, что я вижу неправильно в вашем коде , это 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

Обратите внимание, что я протестировал оба примера блоков кода в условиях, указанных выше, и они работают так, как закодировано.

у меня есть папка в документах с именем «workdir», я применил к ней действие с папкой и в рабочем процессе перетащил утилиту «Run AppleScript», скопировал ваш код и сохранил его, но он не работает при создании новой папки в «workdir»