2011-09-25 15 views
0

私はAutomatorのワークフローに取り組んでいます。URLのリストを "Run AppleScript"に渡しています。各ページの内容を取り出して連結し、BBedit他のテキストエディタ)。AppleScriptのcURLとパースURL

on run {input, parameters} 

    tell application "BBEdit" 
     activate 

     set astid to AppleScript's text item delimiters 

     set startHere to "<tbody>" 
     set stopHere to "</tbody>" 

     repeat with anItem in input 

      set blurb0 to (do shell script "curl " & anItem) 
      set AppleScript's text item delimiters to startHere 
      set blurb1 to text item 2 of blurb0 
      set AppleScript's text item delimiters to stopHere 
      set blurb2 to text item 1 of blurb1 

      set AppleScript's text item delimiters to astid 

      return blurb2 
      beep 

     end repeat  

    end tell 

end run 

現在のコードでは、最初のURLの内容のみが正しく取得されます。誰でもこれを修正できますか? (Safariを使用している場合)

答えて

0

このサブルーチンは何が必要かもしれ...

on getSource(this_URL) 
    tell application "Safari" 
     activate 
     set the URL of the current tab of document 1 to this_URL 
     set the |source| to the source of the front document 
    end tell 
    tell application "TextEdit" 
     activate 
     set the text of the front document to the source 
    end tell 
    quit application "Safari" 
end getSource 

は、使用してそれを呼び出します。

repeat with anItem in input 
    getSource(input) 
end repeat 

私はこれが役に立てば幸い!

0

repeat with anItem in inputループ内にあるので、最初の項目のすべての作業を行い、returnはループを終了し、実際にはAutomatorアクション全体を終了します。私はあなたがあなたのスクリプトからbeepを聞いたことがないと思っています;-)

私はBBEditがあなたにcUrlとソートの仕事をしたいのはなぜですか?

on run {input, parameters} 

    -- define a few parameters 
    set astid to AppleScript's text item delimiters 
    set startHere to "<tbody>" 
    set stopHere to "</tbody>" 

    -- define a list to store all found content 
    set allFoundContent to {} 

    repeat with anItem in input 

     set blurb0 to (do shell script "curl " & anItem) 
     set AppleScript's text item delimiters to startHere 
     set blurb1 to text item 2 of blurb0 
     set AppleScript's text item delimiters to stopHere 

     -- put the found content at the end of the list 
     set end of allFoundContent to text item 1 of blurb1 

     set AppleScript's text item delimiters to astid 

    end repeat 

    -- from here you have three possibilities: 
    -- 1. return the list to next Automator action (uncomment the next line): 

    -- return allFoundContent 


    -- 2. concatenate the list with a delimiter you like (here return & "------" & return) 
    -- and give it to your preferred text editor from this point (uncomment the next lines): 

    -- set AppleScript's text item delimiters to return & "------" & return 
    -- tell application "TextEdit" 
    --  make new document with properties {text: allFoundContent as text} 
    -- end tell 
    -- set AppleScript's text item delimiters to astid 


    -- 3. concatenate the list with a delimiter you like (here return & "------" & return) 
    -- and give it to the next workflow step, maybe a BBEdit action waiting for a string? (uncomment the next lines): 

    -- set AppleScript's text item delimiters to return & "------" & return 
    -- set returnString to allFoundContent as text 
    -- set AppleScript's text item delimiters to astid 
    -- return returnString 


    -- Next decision (for choice 1 or 2): 
    -- What do you want to give to next Automator action? 

    -- you can pass your input (the given URLs) (uncomment next line): 
    -- return input 

    -- or your result list (uncomment next line): 
    -- return allFoundContent 
end run 

挨拶、マイケル/ハンブルク

を:すべてと呼ばれるハンドラは、私はあなたのハンドラは次のようになりますだと思う...のBBEditに

を属していません