1

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

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

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

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

最奇怪的是,如果我在工作流程结束时使用“复制到剪贴板”操作(而不是我的发送到邮件 Applescript),当我将相同的剪贴板内容粘贴到 TextEdit vs .BB编辑。

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

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

是什么导致这 3 种完全不同的行为与“获取链接 URL”操作的完全相同的结果?

4

3 回答 3

0

摆脱所有其他操作并使用您的图库 URL 更新 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
于 2012-12-10T02:45:13.000 回答
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
于 2012-12-10T04:06:57.323 回答
0

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

您不需要做任何花哨的事情来解决这个问题,只需在链接后添加一个返回即可。

我会用这个单一的“运行applescript”动作来完成整个工作。

该脚本仅收集文件 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
于 2012-12-14T17:38:11.667 回答