Automator 操作无法解析 NSUserAutomatorTask 变量 array/list 值

NSUserAutomatorTask variables array/list values cannot be parsed by Automator actions

我正在使用 NSUserAutomatorTask 从 macOS 应用启动 Automator 工作流程。

我正在通过 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 变量有效。它被传递到“打开查找器项目”操作,并且该文件由默认应用程序打开。

以同样的方式传递 multipleFilePaths 无效。没有文件被打开。 Automator 显示错误:

The action "Open Finder Items" was not supplied with the required data.


操作是 "Open Finder Items",因此必须有一些方法可以将多个文件路径传递给此操作。

我的问题和解决方案按优先顺序是:

  1. 为什么默认变量array/list格式传递给后续动作时不起作用?有没有办法以兼容的格式传递或解析数组变量?

  2. 我们可以使用 单个 Run AppleScript 操作将数组变量重新格式化为可以传递给后续 Automator 操作的格式吗? (我想继续链接 Automator 操作而不是 运行 纯 AppleScript)。

Open Finder Items 操作 可以 如果在正常的非变量工作流程中使用,可以打开项目数组。而且它的格式似乎完全相同。

作为测试这个的控件,而不是变量,我正在使用 Get Specified Finder Items 操作。

然后我使用 View Results 操作来检查发送到 Open Finder Items 的内容。

结果好像和我解析变量的时候一模一样:

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

此工作流程正确运行最后的操作并打开文件。

所以 Open Finder Items 应该可以使用我在变量中设置的数据。我不确定为什么无法打开可变数据但可以手动选择文件。


我为此问题打开了 DTS 票证并收到以下响应:

I’m sorry to say the engineers working on this have confirmed that yes, it’s a bug, and no, there isn’t a workaround for sandboxed apps. They’ve also noted this isn’t a regression in behavior from previous releases.