Значения массива / списка переменных NSUserAutomatorTask не могут быть проанализированы действиями Automator - PullRequest
0 голосов
/ 17 апреля 2020

Я использую NSUserAutomatorTask для запуска рабочего процесса Automator из приложения macOS.

Я передаю переменные через свойство variables: https://developer.apple.com/documentation/foundation/nsuserautomatortask/1418099-variables

Внутри рабочего процесса Automator я буду использовать действия Get Value of Variable, чтобы получить переменные, которые были установлены на NSUserAutomatorTask, и передать переменные последующим действиям Automator:

Get Value of Variable


Код выглядит следующим образом: (упрощенно; я также проверяю наличие переменных в рабочем процессе)

let workflow = try! NSUserAutomatorTask(url: url)
workflow.variables = [
    "singleFilePath": "/image1.png",
    "multipleFilePaths": ["/image1.png", "/image2.png"],
]
workflow.execute(withInput: nil)

Я могу напечатать выводить значения переменных в предупреждении с помощью действия Ask for Confirmation:

variable string values.

Значение переменной String представляет собой простую строку: /image1.png

Значение переменной массива [String] заключено в скобки, и каждый элемент заключен в кавычки:

(
  "/image1.png",
  "/image2.png"
)

Теперь я запускаю рабочий процесс Automator с изображением, который сначала получает значение переменной, а затем пытается чтобы открыть эти элементы Finder.

Работает singleFilePath var. Он передается действию Open Finder Items, и этот файл открывается приложением по умолчанию.

Передача multipleFilePaths таким же образом не работает. Файлы не открыты. Automator отображает ошибку:

Действие «Элементы открытого поиска» не было предоставлено с необходимыми данными.


Действие «Элемент открытого поиска» s", поэтому должен быть способ передать несколько путей к файлам для этого действия.

Мои вопросы и решения в порядке предпочтения:

  1. Почему переменная по умолчанию для массива / списка форматов не работает при передаче последующему действию? Есть ли способ передать или проанализировать переменную массива в совместимом формате?

  2. Можем ли мы использовать действие single Run AppleScript, чтобы переформатировать переменную массива в формат, который можно передать последующим действиям Automator? (Я бы хотел продолжить цепочку действий Automator, а не запускать чистый AppleScript).

1 Ответ

0 голосов
/ 17 апреля 2020

Open Finder Items действия могут открыть массив элементов, если они используются в обычном рабочем процессе без переменных. И это, по-видимому, в точно таком же формате.

В качестве контроля для проверки этого, а не переменной, я использую действие Get Specified Finder Items.

Затем я использую View Results действие для проверки того, что отправлено на Open Finder Items.

Результаты, по-видимому, точно такие же, как при анализе переменной:

(
  "/image1.png",
  "/image2.png"
)

Get Specified Finder Items

Этот рабочий процесс правильно запускает финальное действие и открывает файлы.

Так что Open Finder Items должно работать с данными, которые я устанавливаю в переменной. Я не уверен, почему переменные данные не могут быть открыты, а файлы, выбранные вручную, могут.

...