NSUserAutomatorTask变量数组/列表值无法由Automator操作解析

问题描述 投票:0回答:1

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

我正在通过variables属性传递变量:https://developer.apple.com/documentation/foundation/nsuserautomatortask/1418099-variables

然后在Automator工作流程中,我将使用Get Value of Variable操作来获取在NSUserAutomatorTask上设置的变量,并将变量传递给后续的Automator操作:

Get Value of Variable


代码看起来像这样:(简化;我也是工作流中的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操作在警报中打印出变量值:

variable string values.

String变量的值是一个简单的字符串:/image1.png

[String]数组变量的值用括号括起来,并且每个项目都用引号引起来:

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

我现在运行如图所示的Automator工作流程,该工作流程首先获取变量的值,然后尝试打开那些Finder项目。

singleFilePath var有效。它被传递到“打开查找器项目”操作,该文件由默认应用程序打开。

以相同方式通过multipleFilePaths不起作用。没有打开文件。 Automator显示错误:

[操作“打开查找器项目”未提供所需的数据。


该动作是“打开查找器项s”,因此必须有某种方法可以将多个文件路径传递给该动作。

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

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

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

macos cocoa applescript workflow automator
1个回答
0
投票

[Open Finder Items操作可以打开项目数组。

为了测试这个,而不是变量,我正在使用Ask for Finder Items操作。

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

结果似乎与我解析变量时完全相同:

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

Ask for Finder Items in Automator]

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

© www.soinside.com 2019 - 2024. All rights reserved.