automator workflow实现dropbox同步任意文件(夹)

用坚果云有一段时间了,感觉还行。据说这是国内唯一足以媲美dropbox的网盘服务。但是这段时间下来,心里总有点不舒服。归根结底,是我对网盘没有一个明确的规划,导致里面的文件杂乱无章,每次整理都是满满的怨念。

最近跟别人一起租服务器,与shadowsocks私奔到墙外。心里思量着,既然有了出墙的机会,何不趁此把赞誉满钵的dropbox收入麾下。想来坚果云虽好,但总归有种“备胎”的感觉(坚果云用户轻喷…),而且界面上dropbox要更胜一筹,应用支持也比较广泛,最后决定抛弃宝马,坐上玛莎拉蒂(之所以这样比喻,是因为我对汽车一无所知,但又从众地认为后者要优于前者;这正如我对网盘的理解)。

但是一安装Mac版的dropbox,我就发现有点不对劲。如此知名的软件,在如此知名的平台上,竟然不具备其追赶者坚果云所拥有的同步任意文件夹的功能。如果要同步任何文件(夹),就不得不把整个文件拖进唯一的dropbox同步文件夹里。我有轻微的完美主义,这让我心里有点疙瘩;但是又不愿在好不容易做出选择之后又回归坚果云。我同学说,这就是“你爱用用,不用滚”的高冷气质。在他的推荐下,我装上macdropany。看了这玩意的官方介绍,原来dropbox在同步symbolic link的时候,实际上会同步原文件。这实在极其科学,因为我可以用shell脚本来创建软链接。

那么问题来了,我该怎样触发这个shell脚本呢,同时,我要如何获得选取的文件(夹)的名字呢?

前面提到,我有轻微的完美主义。其实不仅如此,我还有轻微的洁癖。为了使dropbox能够同步任意文件夹(并且我认为这是它应该默认提供的功能),我竟然要额外安装一个app,这让我有点不爽。最近听说Alfred的workflow很牛逼,可是价格略贵。经过一番谷歌,原来用automator就可以实现我想做的事情。

说起automator,我们的邂逅比较坎坷。刚买来电脑时,看到这个拿枪的小玩意,我就猜想是跟自动化工作有关的东西。可是Mac的翻译有时让我摸不着头脑——当我打开automator的时候,它让我“新建文稿”——nani,这玩意又是个文档编辑相关的?于是我把它。。。关掉了。直到这个时候,我才知道我误会了。这玩意也是用来创建工作流的。

那么,经过一番搜索,新建文稿的时候,选择“服务”。因为我想要把它做成右键服务菜单。

这个workflow只需简单的两个流程:第1是“获取所选的Finder项目”,第2是“运行AppleScript”。

AppleScript代码如下:

on run {input, parameters}

    (* Your script goes here *)
    tell application "Finder"
        set dropBoxPath to "/Users/edward/Dropbox"
        set filelist to input as list
        set curFile to item 1 of filelist
        set curFilePath to POSIX path of curFile as string
        repeat while curFilePath ends with "/"
            set curFilePath to characters 1 thru ((count of curFilePath) - 1) of curFilePath as string
        end repeat
        set curFilePath to quoted form of curFilePath
    end tell
    --display dialog curFilePath
    do shell script "ln -s " & curFilePath & " " & dropBoxPath
end run

本来想着把workflow做的更完善点,让每个人都能直接用。但是这样一来,需要判断用户是否首次使用;如果是,要把用户指定的dropbox文件夹存入磁盘;此外,用户修改了dropbox文件夹时,workflow还要提供修改的途径。。。这样一来,越来越接近于做成一个app,违背我不想安装macdropany的初衷。

所以这里直接贴出代码,也十分简单。如果你想使用,只需要用automator打开这个workflow,把脚本里的

set dropBoxPath to "/Users/edward/Dropbox"

的路径修改成你自己的,再保存到”~/Library/Services(这就是右键服务菜单项存放的目录)”就行啦。

接下来,右键点击任意文件(夹),看看是不是会多出一个”sync with dropbox”的选项?当然,如果你把workflow改成其他名字,菜单项的名字也会随之改变。

昨晚睡到半夜,燥热难耐(这鬼天气),下来研究了2个多钟。初次写AppleScript,如若丑陋繁琐,请多多指教。后面共享了workflow的dropbox链接。

Download me:

workflow