PhotoshopやIllustrator、After EffectsなどのAdobe製品は、ExtendScript(JavaScriptベース)を使って操作を自動化できます。
ただし、すべての機能にスクリプト用の公式コマンドが用意されているわけではありません。

そのため、一部の操作については「ScriptingListener」プラグインを使い、実際の操作をログとして取得してスクリプトに活用します。
ScriptingListenerとは
ScriptingListenerは、Photoshopでの操作をスクリプト(JavaScript)形式のログとして自動記録するAdobe公式のプラグインです。
出力されたログをスクリプトに組み込めば、標準のオブジェクトモデルでは対応していない操作も自動化できます。
ScriptingListenerの使い方【3ステップ】
STEP1:ScriptingListenerプラグインをダウンロードする
Adobe公式サイトから、使用環境に合ったScriptingListenerプラグインをダウンロードします。
対応プラグインは以下の通りです。
- Windows用
- macOS用(Photoshop 2020以降)
- macOS用(Photoshop 2019以前)
STEP2:プラグインをPhotoshopにインストールする
ダウンロードしたファイルを、該当するOSのプラグインフォルダへ配置します。
Windowsの場合
C:\Program Files\Adobe\Adobe Photoshop [バージョン]\Plug-ins\
ScriptingListener.8li を配置
Macの場合
/Applications/Adobe Photoshop [バージョン]/Plug-ins/ScriptingListener.plugin を配置

Apple Silicon(M1等)搭載Macでの注意点
プラグインを認識させるため、Rosettaを使用してPhotoshopを起動する必要があります。
- Photoshopアプリを右クリックして「情報を見る」を選択
- 「Rosettaを使用して開く」にチェックを入れる

STEP3:ログの確認と停止
Photoshopを起動すると、自動的にデスクトップに「ScriptingListenerJS.log」ファイルが生成され、操作ログが記録されます。

ログの記録を一時停止・再開するスクリプト
ログ出力を一時的に無効化したい場合、以下のスクリプトを Presets/Scripts/ フォルダなどに保存しておくと便利です。
ログ出力をOFFにする
var listenerID = stringIDToTypeID("AdobeScriptListener ScriptListener");
var keyLogID = charIDToTypeID('Log ');
var d = new ActionDescriptor;
d.putBoolean(keyLogID, false);
executeAction(listenerID, d, DialogModes.NO);ログ出力をONに戻す
var listenerID = stringIDToTypeID("AdobeScriptListener ScriptListener");
var keyLogID = charIDToTypeID('Log ');
var d = new ActionDescriptor;
d.putBoolean(keyLogID, true);
executeAction(listenerID, d, DialogModes.NO);Photoshopのそのほかの操作は、まとめ記事から確認できます。

作成したスクリプトをメニューに登録する方法はこちらです。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
環境設定とカンバスの記事は、ほかにもあります。




まとめ
ScriptingListenerは、DOMでサポートされていない操作でもコード化できる便利なツールです。
Photoshopのスクリプト自動化を進めるうえで役立つプラグインです。
操作のコード化に迷った際は、ScriptingListenerでログを記録して記述を確認してみてください。
