Applscript — используйте список для выбора определенного действия Photoshop

Я пытался написать Applescript, используя знания, которые у меня есть.

нынешние камни преткновения

-получение выбора возвращаемого списка для запуска действия фотошопа

-Как повторить действие на нескольких изображениях.

Цель Я хочу использовать список для извлечения различных комбинаций файлов (с установленными соглашениями об именах) из определенной папки, затем я хотел бы, чтобы этот же список выбирал между несколькими действиями Photoshop и запускал извлеченный файл. комбинация через это действие.

Этап 1 – при запуске открывается список.

-Список, содержащий набор имен, относящихся к действиям фотошопа.

-выбрать из списка

Этап 2 — выберите папку с исходными изображениями (всегда 14 изображений, всегда с одинаковыми последними 9 символами от _0000.tif до _0013.tif)

-Выберите папку для сохранения

Этап 3: в зависимости от выбора исходного списка файлы автоматически собираются из папки с исходным изображением и прогоняются через соответствующее действие Photoshop.

например, если «Действие 1» выбрано из списка, выберите изображение «_0001.tiff & _0010.tif» из исходной папки и выполните действие фотошопа «Действие 1».

Этап 4 сохранить в выбранной "папке сохранения"

Сценарий на данный момент

--Этап 1--

set PhotoshopActionList to {"Action1", "Action2", "Action3", "Action4", "Action5"}

set ActionrequiredAnswer to choose from list PhotoshopActionList with title "Actions Picker" with prompt "Choose Action?"


if ActionrequiredAnswer is false then
    error number -128 (* user cancelled *)
else
    set ActionrequiredAnswer to ActionrequiredAnswer's item 1 (* extract choice from list*)
end if

end run

--Этап 2--

property SourceFolder : missing value
property destinationFolder : missing value

if SourceFolder = missing value then
    set SourceFolder to (choose folder with prompt "Choose Base Images:")
    set destinationFolder to (choose folder with prompt "Choose Save Location:")
else

    tell application "Finder"
        set theFolders to every item of entire contents of SourceFolder as list
        repeat with thisFolder in theFolders
            make new alias file at destinationFolder to thisFolder
        end repeat
    end tell
end if

--Этап 3--

tell application "Finder"
    set filesList to {files of entire contents of SourceFolder contains "_001", "_002", "003"} as alias list
end tell

tell application "Adobe Photoshop"
   repeat with aFile in filesList
       open aFile

       do action "Action1" from "Actionsfolder"
end tell

--Этап 4--

save currentDocument in folder destinationFolder as JPEG

person JdG    schedule 11.11.2018    source источник
comment
Я изо всех сил пытаюсь объединить все основные области - не могли бы вы отредактировать свой вопрос, чтобы уточнить, где именно находится камень преткновения? ?   -  person cybernetic.nomad    schedule 11.11.2018
comment
Спасибо за ответ, обновлено, должно быть немного яснее, с чем я сейчас борюсь,   -  person JdG    schedule 11.11.2018


Ответы (1)


Я не нашел способа выбрать все содержимое папки И отфильтровать расширение 'tif', 'tiff',.. И отфильтровать файлы, имя которых содержит ваши шаблоны.

В качестве обходного пути я сделал 2 шага:

1) выбирать во всем содержимом только файлы с целевыми расширениями.

2) Я перебираю эти файлы, чтобы проверить, содержит ли имя файла целевой шаблон. Это делается подпрограммой FnameOK.

Вам нужно завершить приведенный ниже сценарий с вашим экшеном Photoshop и «сохранить как»:

set PhotoshopActionList to {"Action1", "Action2", "Action3", "Action4", "Action5"}
set ListOK to {"_001", "_002", "003"}
set ActionRequiredAnswer to choose from list PhotoshopActionList with title "Actions  Picker" with prompt "Choose Action?"
if ActionRequiredAnswer is false then
    error number -128 (* user cancelled *)
else
    set ActionRequiredAnswer to ActionRequiredAnswer's item 1 (* extract choice from list*)
end if

set SourceFolder to (choose folder with prompt "Choose Base Images:")
set DestinationFolder to (choose folder with prompt "Choose Save Location:")

tell application "Finder" to set filesList to files of entire contents of SourceFolder whose name extension is in {"tiff", "tif"}

repeat with aFile in filesList
    tell application "Finder" to set NameF to name of aFile
    if FNameOK(NameF, ListOK) then -- the file name contains a valid pattern, then process the file
        tell application "Adobe Photoshop" 
            open (aFile as alias)
            -- perform action selected
            -- save as to Destination Folder
        end tell
    end if
end repeat

on FNameOK(Local_Name, LocalList) -- check if the file name contains an element of the list
    set LocalCheck to false
    repeat with OneItem in LocalList
        if Local_Name contains OneItem then
            return true
        end if
    end repeat
    return false
end FNameOK
person pbell    schedule 12.11.2018
comment
Привет, спасибо за ответ, я только что попробовал сценарий, и он застрял при создании списка псевдонимов? Я попытался изменить это со списка псевдонимов на просто список, но затем застрял при настройке NameF. Любые идеи помощи высоко ценятся. Спасибо J - person JdG; 12.11.2018
comment
Этот скрипт отлично работает на моем Mac. Единственная разница в том, что я называю Adobe Photoshop CS3, потому что у меня старая версия Photoshop. Но это не влияет на список файлов. Вы уверены, что использовали тот же синтаксис, что и в сценарии? в чем твоя ошибка? какая линия? (обратите внимание, конечно, если вы измените синтаксис, который я использовал, вы получите список псевдонимов, вы больше не можете получать псевдонимы... тогда следующая инструкция не будет выполнена. - person pbell; 12.11.2018
comment
еще раз спасибо за ответ. Я получаю сообщение об ошибке ниже. \} в список псевдонимов типов. число -1700 из каждого файла «класса ects» псевдонима :Users:User:Desktop:Base Image Folder: расширение имени которого = {tiff, tif} до «class alst» Спасибо J - person JdG; 12.11.2018
comment
Извините моя ошибка. Я неправильно скопировал свой скрипт. Линия теперь обновляется, а также открытая линия. - person pbell; 12.11.2018
comment
Это гениально! Большое спасибо за помощь!! - person JdG; 12.11.2018
comment
Оооо, я использовал вышеизложенное с большим успехом (еще раз спасибо) и задавался вопросом, есть ли простой способ добавить дополнительный элемент в списки, который затем вызывает несколько вариантов списка, например, добавить «действие 4», которое затем выполняется через «Действия 1» и «Действие 2» Я пробовал решение, но оно длинное с повторением, и я уверен, что есть более разумный способ, спасибо. - person JdG; 27.11.2018
comment
Да возможно. добавьте «с возможностью множественного выбора» в конце инструкции «выбрать из списка». это позволит выбрать несколько вариантов, таких как действия 1 и 3. Затем, после «открыть файл», вместо «выполнить действие» просто зациклить (повторить/завершить повтор через выбранные действия и выполнить каждое из них. - person pbell; 28.11.2018