読者です 読者をやめる 読者になる 読者になる

Apple Mailの添付ファイルを一括保存:

必要なファイルなんかはその都度手動で保存しているのだが,それほど重要ではないファイルは一読しただけでスルーしてしまう.困ったのは読み返したいときに目的のファイルまで辿るのが面倒.ので色々と調べてみた.
やりたいのは全ての添付ファイル(拡張子,送信元でフィルタリングできるとなおベスト)を任意のフォルダに保存する.

Apple Script

Save attachments Apple Script for Mail...: Apple Support Communities
Applescript to save mail attachments...: Apple Support Communities
少々面倒なのが,Mountain Lionになって,Apple Scriptの挙動が変わっているようで,ネットで探したコードも動かないことが多い.Apple Scriptに関する知識が少ないことも関係する・・・.
一つ目のリンクのコードで途中まで動くようだが,保存する段階でエラーになる.二つ目のリンクを見ると,~/Downloadsのフォルダに保存するようにすると動くよと言っている*1.変更すると確かに動く.やった.ただ,挙動がいまいち,Mailの選択しているスレッドの全ての添付ファイルを保存しているようだ.たぶん,AppleScriptをいじると送信元や,添付ファイルでフィルタリング出来るんだけど残念ながら知識がない.

シェルスクリプト

次にシェルスクリプトで全ての添付ファイルを保存することを考えてみた.フィルタリングは出来ないがとりあえず全ての添付ファイルを保存して,その後に必要な物だけピックアップする.

#!/opt/local/bin/zsh
line_no=0
find ~/Library/Mail/V2/ | grep -E "jp[e]?g" |
while read LINE;
do
	cp -p $LINE ~/work/hoge/${line_no}_${LINE##*/};
	line_no=`expr $line_no + 1`
done

方針はメールの保存フォルダで全てのファイル表示して,拡張子でフィルタリング,任意のフォルダにコピーする.
添付ファイル名が同じ物があるのでprefixに何番目のファイルなのかを示す文字列を付け足した.

おわりに

シェルスクリプトのやり方で自分がやりたいことはほぼ達成できた.時間があればAppleScriptをもっと理解して高度なことをやりたい.

*1:セキュリティポリシーによりDownloads以外は保存できないようだ.回避方法としては一旦Downloadsに保存して,ファイルを移動するようにすれば大丈夫な模様(確認はしてないが)