0

事情是这样的:
我在 Automator 中使用 AppleScript 来获取剪贴板值,当然它可以工作,但是当我想获取多个分隔值时,它总是只返回一个顶部的值。<br> 这是步骤:

  1. 在Automator中,导入多个“Get Value of Variable”动作,在这些动作中,我会设置多个值,所有这些值都是电子邮件格式
  2. 导入一个名为“Ask For Confirmation”的动作,没有这个动作,我无法将多个值传递给下一个动作“从列表中选择”(我不知道为什么,但它有效)
  3. 导入一个名为“从列表中选择”的操作,让用户选择我在此 Automator 应用程序中预设的电子邮件值
  4. 导入另一个名为“设置变量值”的操作以获取用户选择的值
  5. 导入一个名为“复制到剪贴板”的操作以将这些值复制到剪贴板
  6. 导入一个名为“Run AppleScript”的动作,这是我的代码:

on run {input, parameters}
    --get the clipboard info
    set Storage to get the clipboard
    display dialog Storage
    return input
end run

这是整个动作图片

我尝试手动复制一些 text_1, text_2 ... (command+c, command+v) 然后只运行我的 AppleScript,结果是我真正想要的结果是这样的: AppleScript 结果

这是我的脚本编辑器代码: 这是我的脚本编辑器代码:

不得不说,由于一些限制,我只能使用Automator和AppleScript,那么有什么解决方案或建议吗?这是“获取变量的值”图片 获取变量的值

4

1 回答 1

0

可能的解释:

我相信这是Automator Copy To Clipbard操作或 AppleScript 中的错误。 Automator动作通常是用 Objective-C 编写的,它有一些 AppleScript 没有的数据类型。看起来Automator操作将一个数组复制到剪贴板,这是您可以使用 Objective-C 执行的操作,但不能使用 AppleScript。

我的感觉是 AppleScript 是这里的错误实体,因为操作正在执行它的意图,并且在Automator上下文中,将剪贴板的数据保持为数组类型不会造成问题。AppleScript 在其剪贴板数据处理的实现中可能没有满足这一点,并且在将数组或列表强制转换为纯文本方面做得很差,正如你所说的那样,它只包含数组的第一个元素。

解决方案:

1.使用do shell script命令

代替:

set Storage to get the clipboard

尝试:

set Storage to do shell script "pbpaste"

2.使用AppleScriptObjC

由于Automator操作可能是用 ObjC 编写的,因此可以合理地假设使用 AppleScriptObjC 将使我们能够访问必要的数据类型。

用这个替换你的整个 AppleScript:

    use framework "Foundation"
    use scripting additions

    set Storage to (current application's NSPasteboard's generalPasteboard's ¬
        stringForType:(current application's NSPasteboardTypeString)) ¬
        as text

    display alert Storage

3.通过input变量访问数据

Automator中的Run AppleScript操作获取前一个操作的结果并将其存储在附加到处理程序的变量中,即(您可以忽略)。on run {input, parameters}inputparameters

目前,您的工作流程实际上将剪贴板的内容(Copy To Clipboard操作的输出)直接发送到inputAppleScript 的变量。

因此,您可以将整个 AppleScript 替换为:

    on run {input, parameters}

        set the text item delimiters to linefeed
        set Storage to the input as text

        display dialog Storage

    end run

这些解决方案中的任何一种都应该有效,因此只需选择您喜欢的方法即可。 编号 #3可能在您当前的设置中最有意义,并且是最简单的。

于 2018-06-17T07:10:00.300 回答