フォルダアクションを使って Dropboxの公開リンクとファイル容量をクリップボードにコピーする。

# Macで日常的にやっているちょっとした作業を自動化するには？

　　
僕自身、iOSアプリ関連のデザインを受託しているため、そのデザインを先方に確認してもらうためにDropboxを頻繁に利用しています。

　　
ただ、先方にファイルの公開リンクを送る場合、

**『圧縮ファイルをパブリックフォルダに入れて、公開リンクをコピーして、ちょっとした気配りのつもりでファイル容量もコピーして、メールにペースト。』**

っていうちょっとした手作業が手間だなぁ、と感じる事が多いので
AppleScript + フォルダアクションで自動化してみました。

(※ ちなみにDropboxは『新規ユーザーに対するPublicフォルダの提供を停止』しているようなので、Publicフォルダなんてないよ〜、って方は、ちょっと変更が必要かと思いますが、あしからず。)

　　
## AppleScriptで公開リンクとファイル容量を取得する

まぁ、やってることはすごくカンタンなのでコードをご参考に。

```:ShareToClipboard.script

on adding folder items to this_folder after receiving added_items
	tell application "Finder"
		repeat with aFile in added_items
			set userID to *****
			set shareLink to "https://dl.dropboxusercontent.com/u/" & userID & aFile's name
			set fileSize to get size of aFile
			set sizeText to (((fileSize / 100000) + 0.5) div 1) * 0.1
			set the clipboard to "[file link]: " & shareLink & " (約 " & sizeText & "MB)"
		end repeat
	end tell
	display dialog "公開リンクのコピーが完了しました。"
end adding folder items to

```

　　
## コードの解説

前述の通り、なにも難しい事はしてないので、備忘録としてカンタンに解説しておきます。

まず、今回クリップボードに入れたい文字列は以下になります。

&#91;file link&#93;: https://dl.dropboxusercontent.com/u/*****/fileName.ext (約 00.0MB)

で、前提として" https: "から"*****/"までは、ユーザーごとに固定の文字列がDropboxから割り当てられているので、いつどんなファイルをドロップしてもこの文字列は変わらないようです。
(教えて頂いた 岸川さん [@k_katsumi](hhttps://twitter.com/k_katsumi) に感謝です<(_ _)>)

　　
### フォルダアクション用スクリプトのテンプレ

以下はフォルダアクションに使用するスクリプトのテンプレートです。

```:フォルダアクション用テンプレート

on adding folder items to this_folder after receiving added_items
	tell application "Finder"
		repeat with aFile in added_items
			(* 何らかの処理 *)
		end repeat
	end tell
end adding folder items to

```

フォルダにファイルがドロップされたら、Finder.appを呼び出してそのファイルを取得して処理する。って感じですね。
　
　　
### 公開リンクを取得する

まずはファイルの共有リンクを取得します。
『取得』とは言っても実際に取得してるのはファイル名だけですが。

```:Dropboxの共有リンクを取得

	set userID to *****
	set shareLink to "https://dl.dropboxusercontent.com/u/" & userID & aFile's name

```

userIDには、割り当てられている数字を入れておきます。
前述の通り、この数字は固定なので、一度通常のやり方(ファイルの右クリック)で" 公開リンクをコピー "して、" ***** "の箇所を自分に割り当てられている数字に書き換えてください。

ファイル名はそのまま" aFile's name "で拡張子付きのファイル名が取得出来ます。

　　
### ファイル容量の取得と単位の変換。

```:ファイル容量を取得して、単位をMBにする。

	set fileSize to get size of aFile
	set sizeText to (((fileSize / 100000) + 0.5) div 1) * 0.1

```

ファイル容量は" get size of aFile "で取得出来ます。
ただ、このままだと単位が byte なので、見慣れた感じの" 約 0.0MB "にします。

取得したファイル容量が仮に " 1,191,494 "とした場合に、これを
(((fileSize / 100000) + 0.5) div 1) とすることで、元の万の位が四捨五入されて "12" になります。
それに0.1をかけて "1.2MB" に変える、という回りくどい事をしていますw
(かなり適当です)

　　
### 文字列の結合

ここまでで必要な文字列は出来たので、それぞれの文字列を結合します。

```:文字列の結合とダイアログ表示

	set the clipboard to "[file link]: " & shareLink & " (約 " & sizeText & "MB)"
	...(中略)
	display dialog "公開リンクのコピーが完了しました。"

```

これもカンタンですね。
結合したい文字列を" & "で繋げるだけです。

で、最後に。
AppleScriptによるフォルダアクションの処理は、へそで茶を沸かせるほど遅いのでダイアログを使って、処理が完了した事を通知させています(^〜^;)

(ご注意!!: くれぐれも慣用句の使い方には突っ込まないでくださいw)

　　
## 作ったスクリプトをフォルダアクションに適用する。

書いたスクリプトを適用させるために、まず以下のフォルダに" ShareToClipboard.script "ファイルを移動します。
(自分の環境では認証が必要でした)

Macintosh HD/Library/Scripts/Folder Action Scripts/

　　
次にMac内にあるDropboxフォルダ内のPublicフォルダを右クリックして" フォルダアクション設定... "を選択。

すると"関連づけるスクリプトを選択"と出るので、そのリストの中から先ほどの" ShareToClipboard.script "を選択 > "関連付ける"ボタンをクリック。
で、完了です。

　
しかし、AppleScriptが爆遅なのはどーにかならんもんですかねぇ？