0

私は Automator ワークフローに取り組んでおり、URL のリストを「Run Applescript」に渡しています。各ページのコンテンツを取得し、連結して BBedit (またはその他のテキスト エディター) に渡す必要があります。

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 からコンテンツのみを適切に取得します。誰でもこれを修正できますか?

4

2 に答える 2

0

このサブルーチンは必要なものかもしれません (Safari を使用している場合)...

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

これが役立つことを願っています!

于 2011-09-25T16:54:03.333 に答える
0

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

反対に、なぜ BBEdit に cUrl とソートの作業をさせたいのか疑問に思っています。呼び出されたすべてのハンドラーが BBEdit に属していません...

ハンドラーは次のようになるはずです。

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

こんにちは、マイケル/ハンブルグ

于 2014-11-01T18:50:37.613 に答える