“从网页获取链接URL”操作的结果中的奇怪行为

时间:2012-12-10 01:45:42

标签: applescript automator

我正在建立一个解析Dropbox"画廊"的Automator工作流程。包含Quicktime视频文件的页面,并自动构建"直接下载"每个文件的链接。最后,我希望将所有链接生成到Mail.app消息的正文中。

基本上,除了将新链接发送到新的Mail.app消息的部分外,一切都按预期工作。我的问题是链接被发送到消息正文而没有换行符,因此它们都被连接成一行,如下所示:

https://dl.dropbox.com/u/149705/stackexchange/20121209/stackexchange_automator_prob2.png

(Mail.app似乎将连接的字符串包装在问号上)

最奇怪的是,如果我使用"复制到剪贴板"在工作流结束时的操作(而不是我的发送到邮件的Applescript),当我将相同的剪贴板内容粘贴到TextEdit与BBEdit时,我得到完全不同的结果。

链接似乎正确粘贴到TextEdit中。但是,粘贴到明文BBEdit文档中的同一个剪贴板只产生第一个链接:

https://dl.dropbox.com/u/149705/stackexchange/20121209/stackexchange_automator_prob5.jpg

可能导致这3种完全不同的行为与"获取链接网址"完全相同的结果动作?

3 个答案:

答案 0 :(得分:0)

删除所有其他操作,并使用您的图库网址更新myPage。

on run
    set myPage to "https://www.dropbox.com/sh/aaaaaaaaaaaaaaa/aaaaaaaaaa"
    set myLinks to do shell script "curl " & quoted form of myPage & " | grep -Eo 'https://www.dropbox.com/sh/[^/]*/[^/\"]*/[^\"]*' | sed s'/https:\\/\\/www.dropbox.com\\(.*\\)/https:\\/\\/dl.dropbox.com\\1?dl=1/g'"

    tell application "Mail"
        activate
        make new outgoing message with properties {visible:true, content:"" & myLinks}
    end tell
end run

答案 1 :(得分:0)

每个应用程序都不同,它理解或不理解输出的格式。

关于AppleScript行动:

输入AppleScript list,来自空字符串“”的强制执行单行,因为默认情况下分隔符设置为“”。

要获得所需的结果,请将分隔符设置为returnlinefeed,如下所示。

on run {input}
    set {oTID, text item delimiters} to {text item delimiters, linefeed}
    set tContent to input as text
    set text item delimiters to oTID

    tell application "Mail"
        activate
        make new outgoing message with properties {visible:true, content:tContent}
    end tell
    return input
end run

答案 2 :(得分:0)

您得到该结果的原因是链接从字符串列表开始,但作为单个字符串发送到mail.app。

您不需要做任何想要解决此问题的事情,只需在链接后添加返回即可。

我只想用一个'Run applescript'Action来完成整个工作。

该脚本仅收集DL链接文件。在末尾添加一个返回并将它们发送到Mail.app。 无需其他格式化

    on run {input, parameters}

        set db_tag to "dl-web.dropbox.com/get"
        set myLinks to {}
        tell application "Safari"


            set thelinkCount to do JavaScript "document.links.length " in document 1
            repeat with i from 1 to thelinkCount

                set this_link to (do JavaScript "document.links[" & i & "].href" in document 1) as string

                if this_link contains db_tag then

--add the link with a carriage return on the end.

                    copy this_link & return to end of myLinks
                end if
            end repeat
        end tell


        tell application "Mail"
            activate
            make new outgoing message with properties {visible:true, content:"" & myLinks}
        end tell
    end run