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",因此必须有一些方法可以将多个文件路径传递给此操作。
我的问题和解决方案按优先顺序是:
为什么默认变量array/list格式传递给后续动作时不起作用?有没有办法以兼容的格式传递或解析数组变量?
我们可以使用 单个 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.
我正在使用 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",因此必须有一些方法可以将多个文件路径传递给此操作。
我的问题和解决方案按优先顺序是:
为什么默认变量array/list格式传递给后续动作时不起作用?有没有办法以兼容的格式传递或解析数组变量?
我们可以使用 单个
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.