Я использую NSUserAutomatorTask
для запуска рабочего процесса Automator из приложения macOS.
Я передаю переменные через свойство variables
: https://developer.apple.com/documentation/foundation/nsuserautomatortask/1418099-variables
Внутри рабочего процесса Automator я буду использовать действия Get Value of Variable
, чтобы получить переменные, которые были установлены на NSUserAutomatorTask
, и передать переменные последующим действиям Automator:
Код выглядит следующим образом: (упрощенно; я также проверяю наличие переменных в рабочем процессе)
let workflow = try! NSUserAutomatorTask(url: url)
workflow.variables = [
"singleFilePath": "/image1.png",
"multipleFilePaths": ["/image1.png", "/image2.png"],
]
workflow.execute(withInput: nil)
Я могу напечатать выводить значения переменных в предупреждении с помощью действия Ask for Confirmation
:
Значение переменной String
представляет собой простую строку: /image1.png
Значение переменной массива [String]
заключено в скобки, и каждый элемент заключен в кавычки:
(
"/image1.png",
"/image2.png"
)
Теперь я запускаю рабочий процесс Automator с изображением, который сначала получает значение переменной, а затем пытается чтобы открыть эти элементы Finder.
Работает singleFilePath
var. Он передается действию Open Finder Items, и этот файл открывается приложением по умолчанию.
Передача multipleFilePaths
таким же образом не работает. Файлы не открыты. Automator отображает ошибку:
Действие «Элементы открытого поиска» не было предоставлено с необходимыми данными.
Действие «Элемент открытого поиска» s", поэтому должен быть способ передать несколько путей к файлам для этого действия.
Мои вопросы и решения в порядке предпочтения:
Почему переменная по умолчанию для массива / списка форматов не работает при передаче последующему действию? Есть ли способ передать или проанализировать переменную массива в совместимом формате?
Можем ли мы использовать действие single Run AppleScript
, чтобы переформатировать переменную массива в формат, который можно передать последующим действиям Automator? (Я бы хотел продолжить цепочку действий Automator, а не запускать чистый AppleScript).