AppleScript / Automator:使用选定的文本作为变量

时间:2016-05-11 08:49:43

标签: applescript automator

我无法找到如何将所选文本用作AppleScript和Automator的变量。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

要了解它是如何工作的,请尝试这个非常简单的Automator服务:

在Automator中创建服务,然后选择文字每个应用作为输入。

第一个工作流程步骤是执行Applescript

Applescript的input参数包含所选文字。

将Applescript设置为

on run {input, parameters}
    display dialog (input as text)
    return input
end run

保存后,只要选择了文本,就可以在上下文菜单中使用此操作。

也许命名不同,我不知道英文描述。但我希望这对你来说是一个很好的起点。

玩得开心,迈克尔/汉堡

答案 1 :(得分:2)

对于Applescript,它可以其他应用程序一起使用。要在应用程序中获取前窗的选定文本,Applescript必须使用此应用程序理解/响应的语言/语法。对于非常易编写脚本的基于文​​本文档的应用程序,有很多相似之处,如下所示:

tell app "xyz" to get selection of document 1

然而,确实没有标准。许多应用程序在其可编写脚本的字典中没有“文本选择”对象,因此您必须执行各种解决方法。请参阅以下示例:

tell application "Safari" to set selectedText to (do JavaScript "(''+getSelection())" in document 1)

tell application "System Events" to tell application process "TextEdit" to tell attribute "AXSelectedText" of text area 1 of scroll area 1 of window 1 to set selectedText to its value

tell application "Microsoft Word" to set selectedText to content of text object of selection

您还可以编写“系统事件”脚本来模拟command-c的击键以复制文本。

tell application "System Events" to keystroke "c" using {command down}
delay 1
set selectedText to the clipboard

如果您需要更具体的帮助,请发布您的代码并指明您正在使用的应用。如果它不是可编写脚本的应用程序,那么您将不得不使用最后一个方法,调用系统事件。或者,您可以使用OS X服务,您也会询问。

在Automator中创建服务时,您将创建Service类型的新工作流。然后,只需确保在窗口顶部显示: “服务收到选定的text”。 然后,您可以使用Automator操作与传递给后续操作的选定文本进行交互。 不幸的是,并非所有程序都与服务兼容。