Отмена выбора файла из выбора в Finder через AppleScript - PullRequest
0 голосов
/ 22 января 2020

Я искал повсюду около 6 часов, чтобы найти способ отменить выбор файловых элементов из ранее выбранного массива элементов в Finder через AppleScript через Automator с Quick Action. Я видел отмену выбора всех элементов, видел добавление элементов в выбор / список для обработки, но не удаление элементов из выбора ...

Цель: мне обычно приходится обрабатывать много изображений и получить их одобрение от руководителей, прежде чем предоставлять их на наших серверах для использования. Все они поставляются в комплекте с прозрачным PNG и непрозрачным JPG. Мне нужно только загрузить файлы JPG для утверждения. Итак, допустим, у меня есть 30 изображений. 15 из которых являются JPG, 15 из которых являются PNG. Я хотел бы иметь возможность выбрать все 30 изображений и отменить выбор 15 из которых являются PNG (через сценарий), оставив с выбором всех JPG.

Есть и другие способы достижения этого, но было бы исключительно полезно, если бы я мог просто выбрать изображения, запустить скрипт, а затем переместить их для загрузки (загрузка с веб-сайта). Похоже, это самый быстрый (вручную) способ достижения конечного результата go.

Что я знаю: Свойство selection. В своих исследованиях я видел свойство selection, вызываемое несколькими различными способами, но не уверен, как правильно им манипулировать. Я попытался преобразовать выделение в строку и разделить его, обнаружив слово для разделения (например, «Macinto sh HD»), позволяя им манипулировать в списке, а затем потенциально удаляя их из выделения ... ? Я также очень не уверен, как просто правильно манипулировать свойством как есть ...

Я также пытался просто использовать данные файлы через input через Automator AppleScript. Но увы, это все еще приводит к знанию, как удалить / отменить выбор файла из текущего выбора.

Кто-нибудь знает, как этого добиться?

Я ценю все время и информацию заранее. Спасибо.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Для этого можно использовать два подхода: один в чистом AppleScript, а другой в действиях Automator.

Чистое решение AppleScript - взять выбор в виде списка файлов, скопировать файлы JPG в другой список и установите выделение для этого нового списка, например так:

set new_selection_list to {}
tell application "Finder"
    set selection_list to selection
    repeat with this_item in selection_list
        if name extension of this_item is "jpg" then
            copy this_item to end of new_selection_list
        end if
    end repeat
    set selection to new_selection_list
end tell

Конечно, если вы передаете эти файлы через переменную input в automator, вы бы использовали это вместо снова тестируем выбор, но принцип остается в силе.

В качестве альтернативы вы можете настроить рабочий процесс с помощью действия Filter Finder Items, например, так:

enter image description here

Я бы рекомендовал второй подход. Вероятно, это значительно быстрее и занимает меньше времени.

0 голосов
/ 22 января 2020

Хотя на самом деле не отменяется выбор элементов как таковых, в Finder есть команда reveal, которая покажет указанные элементы. Один из подходов состоит в том, чтобы отредактировать список выбранных элементов, а затем раскрыть результат.

Обратите внимание, что сортировка выбранных элементов варьируется в зависимости от того, происходит ли это из действия Automator (отсортированного по имени) или сообщения Finder. оператор (выбранный порядок) и элементы, смешанные из нескольких папок (как это может происходить в рабочем процессе Automator), приведет к множественному Finder windows.

В следующем примере быстрого действия Automator будут удалены первые два элемента из элементов ввода и откройте остальные элементы в окне Finder:

Рабочий процесс получает текущие файлы или папки в Finder.app

Запуск AppleScript :

   on run {input, parameters}
       set newSelection to input
       if (count input) > 2 then -- guard for following statement(s)
           set newSelection to items 3 thru -1 of input -- or whatever keep/remove criteria
       end if
       tell application "Finder" to reveal newSelection
       return newSelection
   end run
...