我正在使用NSUserAutomatorTask
从macOS应用程序启动Automator工作流程。
我正在通过variables
属性传递变量:https://developer.apple.com/documentation/foundation/nsuserautomatortask/1418099-variables
然后在Automator工作流程中,我将使用Get Value of Variable
操作来获取在NSUserAutomatorTask
上设置的变量,并将变量传递给后续的Automator操作:
代码看起来像这样:(简化;我也是工作流中的check that the variables exist)
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有效。它被传递到“打开查找器项目”操作,该文件由默认应用程序打开。
以相同方式通过multipleFilePaths
不起作用。没有打开文件。 Automator显示错误:
[操作“打开查找器项目”未提供所需的数据。
该动作是“打开查找器项s”,因此必须有某种方法可以将多个文件路径传递给该动作。
我按优先顺序排列的问题和解决方案是:
为什么默认变量数组/列表格式传递给后续操作时不起作用?有没有办法以兼容格式传递或解析数组变量?
我们可以使用single Run AppleScript
动作将数组变量重新格式化为可以传递给后续Automator动作的格式吗? (我想继续链接Automator动作,而不是运行纯AppleScript)。