Applscript - используйте список для выбора конкретного действия Photoshop - PullRequest
0 голосов
/ 11 ноября 2018

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

Текущие камни преткновения

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

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

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

Стадия 1 -при запуске открыть список

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

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

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

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

Стадия 3 - Зависит от выбора оригинального списка, автоматически собирает файлы из папки исходного изображения и запускает их через действие фотошопа

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

stage4 сохранить в выбранной «папке сохранения»

Сценарий до сих пор

- Этап 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

1 Ответ

0 голосов
/ 12 ноября 2018

Я не нашел способа выбрать все содержимое папки И отфильтровать расширения '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
...