3

在尝试执行从选定文本中打开多个选项卡作为输入的自动操作时,我遇到了一个 Applescript 问题,我暂时无法解决。这包括答案,我将其发布在这里,因为我只是无法找到有关如何处理“输入”中的数据的文档,以便在“任何应用程序”自动化操作中接收选定的“文本”,一切都适用于文件已经作为一个列表出现。

当放入一个applescript动作时,你会得到:

on run {input, parameters}

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

        repeat with URL in input
        set this_URL to URL

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

4

3 回答 3

3

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

on run {input, parameters}

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

在执行“每一段”之前,如果不首先将输入“视为字符串”,它将无法正常工作。

这是最终的工作脚本,用你自己的替换“some_url”。您将能够在编辑器中选择多行文本,并将每一行视为固定网址的参数,在新的 safari 选项卡中打开每一行。这可以通过将每行分隔为 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/”和 this_URL 提供了上述服务

6318162 
6318163 
6318164

您现在可以选择它们单击服务并选择您的“StackOverflow - 查看问题”服务,它会在新的 safari 选项卡中附加并打开每个服务。在我的情况下,我需要验证我们服务器中的多个 dns 条目是否仍然有效,并进行大量 whois 查找。

于 2011-06-11T19:48:13.313 回答
2

我一直在寻找同样的东西,只是寻找从 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
于 2014-02-25T22:50:11.603 回答
0

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

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

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

特别是,我在电子邮件中收到服务器/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

我发现我需要'return selectedFiles'。总是神秘的(对我来说)文本分隔符可能不是必需的,并且来自以前的版本,它只提取了一个 URL。

于 2020-08-28T11:51:32.357 回答