我正在使用NSUserAutomatorTask来启动.workflow文件,该文件是通过macOS 10.13中的Automator应用程序创建的。
我通过variables属性将变量传递给工作流:
HTTPS://developer.apple.com / …
该 AMWorkFlow 方法 setValue(_:forVariableWithName:) 和 valueForVariable(withName:) 两者都安全地确定是否在工作流文件中设置了该变量。
AMWorkFlow
setValue(_:forVariableWithName:)
valueForVariable(withName:)
所以,构建一个 AMWorkFlow 和你一起 NSUserAutomatorTask 。仅设置脚本正在使用的变量,如下所示 AMWorkFlow :
NSUserAutomatorTask
if let automatorTask = try? NSUserAutomatorTask(url: url) { if let varChecker = try? AMWorkflow(contentsOf: url) { automatorTask.variables = POSSIBLE_VARIABLES.filter { return varChecker.setValue($0.value, forVariableWithName: $0.key) // -or- // return varChecker.valueForVariable(withName: $0.key) != nil } } automatorTask.execute(withInput: nil, completionHandler: nil) }
AMWorkFlow 在沙箱中根本不执行,所以你必须使用 NSUserAutomatorTask 实际运行工作流程。
do { try AMWorkflow.run(at: url, withInput: nil) } catch let error { print(error) }
Automator在运行此工作流程时遇到错误: 沙盒应用程序无法使用Automator.framework来运行工作流程。 Error Domain = com.apple.Automator Code = 0“Automator在运行此工作流程时遇到错误: Sandboxed应用程序无法使用Automator.framework运行工作流程。”UserInfo = {NSUnderlyingError = 0x604000e498a0 {Error Domain = com.apple .Automator Code = 0“沙盒应用程序无法使用Automator.framework来运行工作流程。” UserInfo = {NSLocalizedDescription =沙盒应用程序无法使用Automator.framework来运行工作流。}},NSLocalizedDescription = Automator在运行此工作流时遇到错误: Sandboxed应用程序无法使用Automator.framework运行workflows. ,NSLocalizedFailureReason = Sandboxed应用程序无法使用Automator.framework来运行工作流。}
Error Domain = com.apple.Automator Code = 0“Automator在运行此工作流程时遇到错误: Sandboxed应用程序无法使用Automator.framework运行工作流程。”UserInfo = {NSUnderlyingError = 0x604000e498a0 {Error Domain = com.apple .Automator Code = 0“沙盒应用程序无法使用Automator.framework来运行工作流程。” UserInfo = {NSLocalizedDescription =沙盒应用程序无法使用Automator.framework来运行工作流。}},NSLocalizedDescription = Automator在运行此工作流时遇到错误: Sandboxed应用程序无法使用Automator.framework运行workflows. ,NSLocalizedFailureReason = Sandboxed应用程序无法使用Automator.framework来运行工作流。}