Photoshopは各種スクリプトへ対応する以前から、アクションによって自動化することができました。

そして現在、Aodebeはそのアクションの内部記録をスクリプトとして書き出す「Scripting Listener」というプラグインを用意しています。これを使うことにより、アクションで記録できる動作はスクリプトを書かずにコーディングすることが可能になっています。

 

<Scripting Listenerのダウンロード>

Scripting Listenerは標準で用意されていませんので、以下のサイトから入手します(Windows用とMac用が用意されています)。

https://helpx.adobe.com/jp/photoshop/kb/downloadable-plugins-and-content.html#id_68969

 

<インストール>

ダウンロードした圧縮ファイルを解凍すると、Scripting Listenerプラグインとドキュメントがあります。

このプラグインをしかるべきところにコピーします。詳しいインストール方法は付属のドキュメント「Photoshop Scripting Guide JA.pdf」を参照してください。

 

<使用方法>

インストール後はアクションで記録できるユーザーの動作を、デスクトップ上に作られる以下のファイルにすべて書き出します。

JavaScript用:ScriptingListenerJS.log

VB用:ScriptingListenerVB.log

 

このファイルを開くと以下のような記述になっています(JavaScript)。

// =======================================================
var idOpn = charIDToTypeID( "Opn " );
    var desc = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    desc.putPath( idnull, new File( "C:\\Users\\nakatoji\\Desktop\\01.jpg" ) );
executeAction( idOpn, desc, DialogModes.NO );

これはデスクトップにあるファイルをダブルクリックで開いたものですが、これをそのままスクリプトとして実行するとユーザーの動作が再現されます。

なお、ひとつひとつの動作はセパレータ(// ===)で区切られ、新しいものは末尾に書き加えられていきます。

 

Scripting Listenerで留意しなければならないのは、「すべての動作が記録対象になっている」という点です。

それによる実行速度の低下、記録ファイルの肥大化が起こりますので、記録が不要なときはアンインストールしておくのが無難です。

 

<応用編>

基本的に内容を理解できなくても利用することはできますが、少しだけ違った動作をいくつか行うとその差分がすぐにわかりますので、その値をパラメータ化して関数を作ることはそれほど難しいことではありません。

例えば先の例を関数化すれば、以下のようなものになるでしょう。

function openDoc (dir) {
    var idOpn= charIDToTypeID( "Opn " );
    var desc= new ActionDescriptor();
    var idnull= charIDToTypeID( "null" );
    desc.putPath( idnull, new File( dir ) );
    executeAction( idOpn, desc, DialogModes.NO );
}
// 関数呼び出し
openDoc("C:\\Users\\nakatoji\\Desktop\\01.jpg");

 

Photoshopは歴史的経緯から「アクションで記録できてもスクリプトでは操作することができない」ものが数多く残されていますので、そういった時にもScripting Listenerは非常に有用です。

 

 

Joomla templates by a4joomla