2011-06-10 6 views
2

選択されたテキストから複数のタブを開くオートメーションアクションを作成しようとしているうちに、私はAppleScriptの問題に遭遇しました。これは答えを含み、私はちょうど "任意のアプリケーション"のオートメーターアクションで選択された "テキスト"を受け取るための "入力"のデータを扱う方法に関するドキュメントを見つけることができなかったので、これを投稿しています。すでにリストとして入っています。 オートスクリプトで選択されたテキストのリストをAppleScriptで処理します

でのAppleScriptアクションを入れ

は、あなたが得る:

on run {input, parameters} 

ここでの問題は、入力がリスト形式ではなく、それはスクリプトを壊すか、エラーをスローして何かをしようとしているということです。つまり、私はできません:

 repeat with URL in input 
     set this_URL to URL 

私はどのように項目のリストとして選択したテキストのリストを扱うことができますか?

答えて

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/」あなたがリストを持っていたし、使用して上記のサービスを持っていたと言う& this_URL

6318162 
6318163 
6318164 

あなたは今、それらをクリックし選択することができますあなたの "StackOverflow - ビューの質問"サービスを選択すると、新しいサファリタブに各サービスを追加して開きます。私の場合は、私たちのサーバの複数のDNSエントリをまだ有効であると確認し、たくさんのwhois検索を行う必要がありました。

+1

を。最初のコード例では、 'inputText as string'の各段落にURL_listを設定して2行を結合することはできませんか? – nekomatic

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 
関連する問題