@ Виллек, великолепно! Это работает.

ользуюNSUserAutomatorTask запустить.workflow файл, созданный с помощью приложения Automator в macOS 10.13.

Я передаю переменные в рабочий процесс черезvariables свойство:

https://developer.apple.com/documentation/foundation/nsuserautomatortask/1418099-variables

Родительское приложение находится в песочнице. Скрипт находится в.applicationScriptsDirectory и запускается успешно, когда переменные не установлены, или когда те же переменные установлены из приложения и объявлены в рабочем процессе.

if let workflow = try? NSUserAutomatorTask(url: url) {

    workflow.variables = ["randomVariable": "value"] // NOTE

    workflow.execute(withInput: nil) { (value, error) in
        if let error = error {
            print(error) // No variable named "randomVariable"
        }
    }
}

Рабочий процесс не запускается с ошибкой:

Нет переменной с именем randomVariable

Однако, если я отредактирую рабочий процесс и добавлю переменную, совпадающую с той, которая установлена ​​в коде, все в порядке.

Я больше не получаю сообщение об ошибке, и рабочий процесс выполняется правильно:

Это проблема, потому что я хочу передать несколько частей информации в качестве переменных для любого потенциального рабочего процесса, и для каждого рабочего процесса индивидуально принять решение обработать каждый необходимый параметр.

я не хочутребовать что каждый рабочий процесс объявляет переменные, которые мое приложение будетпо выбору предоставлять.

Обратите внимание, что в моем примере рабочего процесса эта переменная никогда не используется. Я не хочу дополнительного требования, чтобы это было объявлено.

Есть ли способ избежать, чтобы каждый рабочий процесс объявлял переменные, которые мое приложение передает при выполнении рабочего процесса?

Или есть способ проверить, какие переменные объявлен рабочим процессом? Я мог тогда только передать те, которые фактически используются рабочим процессом.

Ответы на вопрос(1)

Ваш ответ на вопрос