开发者

Processing list of selected text in automator with applescript

While trying to make an automator action that opens multiple tabs from selected text as input I ran into an applescript issue I wasn't able to solve for awhile. This includes the answer and I'm posting this h开发者_运维问答ere because I just wasn't able to find documentation on how to handle data in "input" for a receives selected "text" in "any application" automator action, everything is for files which comes in as a list already.

When putting an applescript action in, you get:

on run {input, parameters}

the problem here is that input isn't in a list format and trying to do anything with it breaks the script or throws an error. ie I can't do:

        repeat with URL in input
        set this_URL to URL

So how can I treat a list of selected text as a list of items?


the solution is first treat input as a string then break apart every paragraph.

on run {input, parameters}

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

Without treating input "as string" first before doing "every paragraph of" it won't work.

Here's the end working script, replace the "some_url" with your own. You'll be able to select several lines of text in an editor and treat each one as a parameter to your fixed url opening each in a new safari tab. This could be expanded upon by having each line be delimited for multiple params on the 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

As an example say you had the list and had a service of the above using "http://stackoverflow.com/posts/" & this_URL

6318162 
6318163 
6318164

you could now select them click services and choose your "StackOverflow - view questions" service and it'll append and open each one in a new safari tab. In my case I needed to verify multiple dns entries in our server as still valid and do a bunch of whois lookups.


I was looking for the same thing, just for files as input from Automator to AppleScript.

ddowns's trick didn't work for that, but ended up using this, hope it's helpful for someone looking for solving the same issue I ran into:

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


As Hanzaplastique says, for AppleScript within Automator, you don't need the Safari AppleScript because there's an Action for that. I use the following Actions:

  • Extract URLs from Text (actually the 'Extract Data from Text' Action)
  • Run AppleScript
  • Display Webpages

I use it as a Workflow added to the Services menu so that I can right-click on selected text in an email and open multiple URLs in Safari tabs.

In particular, I get Server / WordPress updates in an email but the URLs are just the top level of the domains and I want to jump to the plugins page of WordPress. So, my AppleScript (with thanks to Hanzaplastique) is:

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

I found I needed the 'return selectedFiles'. The always mysterious (to me) text delimiters may not be necessary and come from the previous version which only pulled out a single URL.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜