Photoshop CSからメールを送信する

 Photoshop CSでバッチ処理を行う事があると思います。これは非常に大量にあると、いつ処理が終了するか分かりません。コンピューターの前に座って他のアプリケーションを使って仕事をしつつ、終了するのを確認するという使い方になってしまいます。これは、これで悪くありませんし普通の使い方です。
 バッチ処理するファイルが数千〜数万もあり、帰宅時間もせまっている、運悪く壊れたファイルがあってバッチ処理が止まってしまうかも。そんな時、自分の自宅のパソコンや携帯にメールで終了したかどうか、エラーが発生したかどうかを知らせてくれたら便利そうです。
 ちなみにAfterEffects 6.0/6.5にはソケット通信ができる仕組みがあるため、このような終了したらメールで知らせるという処理は簡単にできます。しかし、Photoshop CSには残念ながら、ソケット通信を行う仕組みもなく、メールを送信する機能もありません。
 しかし、Photoshop CSには「外部のファイルを起動する」という非常に便利で有益な機能があります。今回は、これを使って外部のアプリケーションを呼び出してメールを送信する事にします。ここでは、MacOS Xで動作するもののみ解説しています。Windowsでは別の方法が必要だと思いますが、分からないので参考までに読んで下さい。

 まず、メールを送信する手段ですが、MacOS Xには標準でMailというメールの送受信、管理を行うアプリケーションが付属しています。このMailはAppleScriptで制御できるようになっています。つまりAppleScript経由でMailにメール送信させるようにします。
 スクリプトエディタ(アプリケーションフォルダ内のAppleScriptフォルダ内にあるScript Editor)を起動して以下のスクリプトを入力します。

property mail_subject : "Photoshop CS Batch End"
property mail_content : "Photoshop CS Batch End"
property mail_from : "openspc@po.shiojiri.ne.jp"
property mail_to : "openspc@po.shiojiri.ne.jp"

tell application "Mail"
set PhotoshopCS_message to make new outgoing message with properties {visible:true, subject:mail_subject, content:mail_content, sender:mail_from}
tell PhotoshopCS_message
make new to recipient at end of to recipients with properties {address:mail_to}
end tell
send PhotoshopCS_message
end tell

 上から三番目が送り主のメールアドレスです。四番目が送信先のメールアドレスです。どのみち自分しか使わないのであれば、どちらも同じアドレスにしておけば良いでしょう。上記のサンプルでは私のメールアドレスになっています。
 入力&メールアドレスを設定したらアプリケーションとして保存します。例えばbatchEndという名前で保存します。この場合アプリケーションなので拡張子が.appになります。正確にはbatchEnd.appという名前のアプリケーションができあがります。

 これでPhotoshop CSから呼び出すアプリケーションが準備できました。次にJavaScriptをエディタで入力します。今回はメールを送信するサンプルなので2行しかありません。

fileObj = new File("/batchEnd.app");
fileObj.execute();

 一番最初の/batchEnd.appが実行するアプリケーションのあるパス(場所)です。分からない場合には一番上の階層(ルートディレクトリ)にアプリケーションを作っておけば良いでしょう。入力&設定が終わったらPSmail.jsなどのように拡張子を.jsにして保存します。

 あとはPhotoshop CSから試しに実行してみます。ファイルメニューから「スクリプト」→「参照...」で先ほど作成したJavaScriptファイル(例:PSmail.js)を選択します。するとMailが起動し自動的にメールが送信されるはずです。もし、セキュリティか何かの都合で確認のダイアログが表示されたら一度だけOKボタンを押せば以後は出なくなります。

 自動的に何かを処理させておくような場合には、トラブルが発生したらメールを送信するという機能は便利だと思います。




[サンプルをダウンロード]