使用applescript处理automator中所选文本的列表

时间:2011-06-10 19:16:12

标签: applescript automator

在尝试制作一个自动机操作,从所选文本中打开多个选项卡作为输入时,我遇到了一个AppleScript问题,我暂时无法解决。这包括答案,我在这里发布这个,因为我无法在“任何应用程序”自动机操作中找到接收所选“文本”的“输入”中如何处理数据的文档,一切都是针对哪些文件已列入清单。

当把一个AppleScript动作放入时,你得到:

on run {input, parameters}

这里的问题是输入不是列表格式,并且尝试用它做任何事情会破坏脚本或引发错误。即我做不到:

        repeat with URL in input
        set this_URL to URL

那么如何将所选文本列表视为项目列表呢?

3 个答案:

答案 0 :(得分:3)

解决方案首先将输入视为字符串,然后拆分每个段落。

on run {input, parameters}

set inputText to input as string
set URL_list to every paragraph of inputText

在执行“每个段落”之前,首先不将输入“作为字符串”处理,否则它将无效。

这是最终的工作脚本,用你自己的“some_url”替换。您将能够在编辑器中选择多行文本,并将每个文本作为参数添加到新的Safari选项卡中的固定URL开头。这可以通过在URL上为每个行分隔多个参数来扩展。

on run {input, parameters}

set inputText to input as string
set URL_list to every paragraph of inputText
tell application "Safari"
    activate
    repeat with URL in URL_list
        set this_URL to URL
        # extra processing of URL could be done here for multiple params
        my new_tab()
        set tab_URL to "http://some_url.com?data=" & this_URL
        set the URL of document 1 to tab_URL
    end repeat
end tell
return input
end run

on new_tab()
    tell application "Safari" to activate
    tell application "System Events"
        tell process "Safari"
            click menu item "New Tab" of ¬
                menu "File" of menu bar 1
        end tell
    end tell
end new_tab

举个例子说你有了这个列表,并使用“http://stackoverflow.com/posts/”&amp ;;提供上述服务。 this_URL

6318162 
6318163 
6318164

您现在可以选择它们点击服务并选择“StackOverflow - 查看问题”服务,它将附加并在新的Safari选项卡中打开每个服务。在我的情况下,我需要验证我们的服务器中的多个dns条目仍然有效并执行一堆whois查找。

答案 1 :(得分:1)

(抱歉醒来一个老帖子) 我一直在寻找相同的东西,仅用于从Automator到AppleScript的输入文件。 ddowns技巧不起作用,但最终使用它,希望它对寻找解决我遇到的同一问题的人有帮助:

on run {input, parameters}

    -- create empty list
    set selectedFiles to {}

    -- add each list item to the empty list
    repeat with i in input
        copy (POSIX path of i) to end of selectedFiles
    end repeat

    -- show each item (just for testing purposes of course) 
    repeat with currentFile in selectedFiles
        display dialog currentFile as text
    end repeat

end run

答案 2 :(得分:0)

正如Hanzaplastique所说,对于Automator中的AppleScript,您不需要Safari AppleScript,因为有一个操作。我使用以下操作:

  • 从文本中提取URL(实际上是“从文本中提取数据”操作)
  • 运行AppleScript
  • 显示网页

我将其用作添加到“服务”菜单中的工作流,以便可以右键单击电子邮件中的选定文本,并在Safari选项卡中打开多个URL。

特别是,我通过电子邮件获得了Server / WordPress更新,但是URL只是域的顶层,我想跳到WordPress的插件页面。因此,我的AppleScript(感谢Hanzaplastique)是:

on run {input, parameters}
    set AppleScript's text item delimiters to {return & linefeed, return, linefeed, character id 8233, character id 8232}
    -- create empty list
    set selectedFiles to {}
    -- add each list item to the empty list
    repeat with i in input
        set AppleScript's text item delimiters to {" "}
        set i to i & "/wp-admin/plugins.php"
        copy i to end of selectedFiles
    end repeat
    return selectedFiles
end run

我发现我需要“返回selectedFiles”。对我而言,永远都是神秘的文本定界符可能不是必需的,并且来自以前的版本,后者仅提取了一个URL。