Action Manager は、ExtendScript(.jsx)から、DOM で書けない Photoshop の操作を実行する仕組みです。
ScriptingListener で記録したコードは、この Action Manager の書き方で出てきます。
- 記録できる操作をAction Managerで再実行する。対象文書・レイヤー・プラグインの条件が同じか確認する
- executeAction(イベントID, 記述子, ダイアログの扱い) で実行する
- charIDToTypeID は4文字のコード、stringIDToTypeID は文字列の名前を、実行時の ID に変える
- DialogModes.NO でダイアログを出さずに実行する
この記事は、Adobe の Photoshop Scripting Guide と JavaScript Reference(本記事で参照した2020年版)にもとづいています。
2026年10月20日に、Photoshop 2026(27.11.0)とWindows 11 Proで、この記事の3つのコードを書き換えずに保存し、[ファイル]→[スクリプト]→[参照…]から実行して確かめました。
結果は「Photoshop 2026で試した結果」にまとめています。
ScriptingListenerでの記録と、スマートオブジェクトの中身の置き換えは確かめておらず、「Replace Contents」は英語版の表記のままです。
ScriptingListenerで記録する
ScriptingListenerは、Photoshopを終了してからOSに合う公式配布物を展開し、UtilitiesフォルダーをPhotoshopのPlug-insへコピーして再起動する、という手順が現在のAdobeヘルプで案内されています。対応する操作がログへ追記されることを確認してください。
記録はデスクトップの ScriptingListenerJS.log(JavaScript)と ScriptingListenerVB.log(VBScript、Windows だけ)に出ます。
入れたままだとログが大きくなり Photoshop も遅くなるので、コードを取るときだけ入れるよう、ガイドに書かれています。
Windows版のPhotoshop 2026では、インストール先のフォルダー名はPlug-insでした。
この機にはScriptListenerを入れていないので、記録されるログは確かめていません。
入れ方は、ScriptingListenerの使い方で紹介しています。
記録されたコードを読む
公式ガイドの、エンボスのフィルターを記録した例です。
var id19 = charIDToTypeID( "Embs" );
var desc4 = new ActionDescriptor();
var id20 = charIDToTypeID( "Angl" );
desc4.putInteger( id20, 135 );
var id21 = charIDToTypeID( "Hght" );
desc4.putInteger( id21, 3 );
var id22 = charIDToTypeID( "Amnt" );
desc4.putInteger( id22, 100 );
executeAction( id19, desc4 ,DialogModes.NO);| 行 | 意味 |
|---|---|
charIDToTypeID( "Embs" ) | エンボスのイベントの ID |
new ActionDescriptor() | 設定の値を入れる入れ物 |
| desc4.putInteger( 角度の ID, 135 ) | 角度を135にする |
| desc4.putInteger( 高さの ID, 3 ) | 高さを3にする |
| desc4.putInteger( 量の ID, 100 ) | 量を100にする |
| executeAction( イベント, 記述子, DialogModes.NO ) | ダイアログを出さずに実行する |
charIDToTypeIDとstringIDToTypeID
| 関数 | 変えるもの |
|---|---|
| charIDToTypeID | 4文字のコード("Embs" など)→ 実行時の ID |
| stringIDToTypeID | 文字列の名前("pixelScaleFactor" など)→ 実行時の ID |
| typeIDToCharID | 実行時の ID → 4文字のコード |
| typeIDToStringID | 実行時の ID → 文字列の名前 |
ScriptingListener の記録には、両方が混ざって出てきます。
意味を調べたいときは、typeIDToStringID で文字列の名前に変えると、読みやすくなります。
alert( typeIDToStringID( charIDToTypeID( "Embs" ) ) );上の1行は、4文字のコードを文字列の名前に変えて表示する書き方の例です。
Photoshop 2026(27.11.0)で、文書を開いていないホーム画面から実行すると、「emboss」と表示されました。

IDを名前に変えるだけなので、文書を開いていなくてもエラーになりませんでした。
Action Managerの入れ物
| オブジェクト | 役割 |
|---|---|
| ActionDescriptor | 名前と値の組を入れる(設定の値) |
| ActionList | 値の並び |
| ActionReference | 対象(レイヤーや書類)を指す |
値を取り出すときは、executeActionGet(ActionReference) で ActionDescriptor を受け取ります。
AppleScriptからこれらのAction Managerオブジェクトを直接使うことはできません。ただし、2020年版公式ガイド80ページでは、AppleScriptのdo javascriptコマンドからJavaScriptのコードやファイルを実行する方法を案内しています。今回Macでの実行確認はしていません。
関数にするコツ
- id19 のような番号の変数は、意味の分かる名前に変える
- 135 や 3 のような値を、関数の引数にする
- DialogModes.NO を DialogModes.ALL にすると、ダイアログを出して値を選ばせられる
function emboss(angle, height, amount) {
var desc = new ActionDescriptor();
desc.putInteger(charIDToTypeID("Angl"), angle);
desc.putInteger(charIDToTypeID("Hght"), height);
desc.putInteger(charIDToTypeID("Amnt"), amount);
executeAction(charIDToTypeID("Embs"), desc, DialogModes.NO);
}
emboss(135, 3, 100);2020年版公式ガイド75〜76ページの手順3・4では、宣言したdesc4と異なるdesc7にAmntを設定する記述が混ざっています。続く手順5の完成例はdesc7に統一されています。2026年10月29日に原本の記述を照合しましたが、誤記を含む例の実行はしていません。
Photoshop 2026で試した結果
2026年10月20日に、Photoshop 2026(27.11.0)とWindows 11 Proで、上の3つのコードを書き換えずに保存し、[ファイル]→[スクリプト]→[参照…]から実行しました。
練習用の文書(600×400px、72ppi、背景レイヤー1枚)は、別のスクリプトで作ったので確認に含めていません。
結果は、実行の前後にヒストリーと色をスクリプトで読み取って比べました。
記録したコードは窓を出さずにエンボスをかける

「記録されたコードを読む」のコードを実行すると、[エンボス]の窓は出ずに、すぐに画像全体へエンボスがかかりました。
ヒストリーには「エンボス」が1つ積まれ、平らな所は灰色(#808080)になりました。
関数にしたコード(emboss(135, 3, 100))も、開き直した同じ文書で実行すると、記録したコードとまったく同じ画像になりました。
DialogModes.ALLにすると値の入った窓が出る
関数にしたコードのDialogModes.NOだけをDialogModes.ALLに変えて実行しました。

[エンボス]の窓が開き、角度135°・高さ3pixel・量100%と、コードで渡した値が最初から入っていました。
高さを10に変えて[OK]を押すと、変えた値でエンボスがかかりました。
[キャンセル]を押すと、「エラー 8007: ユーザーにより操作がキャンセルされました」が出て、画像は変わりませんでした。
[キャンセル]はスクリプトのエラーとして返るので、窓を出すコードでは、キャンセルされたときの扱いも決めておきます。
文書を開かずに実行するとエラーになる

文書を開いていないホーム画面で、記録したエンボスのコードを実行すると、「エラー 8800」の窓が出ました。
窓には「「エンボス」コマンドは現在使用できません。」と、executeActionの行(ライン 9)が表示されました。
[OK]で閉じるとスクリプトは止まり、ほかには何も起きませんでした。
確かめていないこと
公式ガイドの誤記は原本で照合しました。ScriptingListenerでの記録、スマートオブジェクトの中身の置き換え、AppleScriptからの実行は今回確かめていません。
ほかの会社のフィルター、レイヤーが複数ある文書、Mac版と他の版も試していません。
スマートオブジェクトの中身の置き換え
スマートオブジェクトの「Replace Contents」も、記録すれば Action Manager で実行できる操作です。
Adobe の C++ SDK の用語表には placedLayerReplaceContents という名前がありますが、Scripting Guide には書き方の例がありません。
使うときは、ScriptingListener で実際に記録してコードを取るのが確実です。
UXPへの移行
UXP では、Action Manager の代わりに batchPlay を使います。
書き方は、PhotoshopのbatchPlayの使い方で紹介しています。
まとめ
- Action Manager は、記録できる操作を ExtendScript から実行する仕組み
- executeAction(イベント, ActionDescriptor, DialogModes.NO) の形
- charIDToTypeID は4文字、stringIDToTypeID は文字列の名前
- 変数名と値を整理して関数にすると使い回せる
参考:Adobe「Photoshop Scripting Guide」「Photoshop JavaScript Reference」(2020年版)。導入手順はScriptingListenerの公式インストール案内で2026年10月24日に再確認しました。
よくある質問:PhotoshopのAction Manager
Action Managerとは、何ですか?
ExtendScript(.jsx)から、DOMで書けないPhotoshopの操作を実行する仕組みです。ScriptingListenerで記録したコードは、このAction Managerの書き方で出てきます。記録した操作の再実行には、対象文書やレイヤー、利用するプラグインの条件も必要です。記録できたことだけで、別環境での実行成功は保証されません。
ScriptingListenerは、どう使いますか?
Photoshopを終了し、OSに合う公式配布物を展開してUtilitiesフォルダーをPlug-insへコピーし、再起動します。対象操作を行ってログの追記を確認してください。記録は、デスクトップのScriptingListenerJS.log(JavaScript)とScriptingListenerVB.log(VBScript、Windowsだけ)に出ます。入れたままだとログが大きくなりPhotoshopも遅くなるので、コードを取るときだけ入れるよう、ガイドに書かれています。入れ方は、関連記事「ScriptingListenerの使い方」で紹介されています。
記録されたコードは、どう実行しますか?
executeAction(イベントID, 記述子, ダイアログの扱い)で実行します。DialogModes.NOでダイアログを出さずに実行します。
charIDToTypeIDとstringIDToTypeIDは、何が違いますか?
charIDToTypeIDは4文字のコード、stringIDToTypeIDは文字列の名前を、実行時のIDに変えます。ScriptingListenerの記録には、両方が混ざって出てきます。意味を調べたいときは、typeIDToStringIDで文字列の名前に変えると、読みやすくなります。
ActionDescriptor、ActionList、ActionReferenceは、それぞれ何ですか?
ActionDescriptorは名前と値の組を入れる(設定の値)もの、ActionListは値の並び、ActionReferenceは対象(レイヤーや書類)を指すものです。値を取り出すときは、executeActionGet(ActionReference)でActionDescriptorを受け取ります。AppleScriptから直接は使えませんが、do javascriptコマンドでJavaScriptのコードやファイルを実行する方法は公式ガイドに記載されています。今回Macでの実行は未確認です。
記録したコードを、関数にするコツはありますか?
id19のような番号の変数は、意味の分かる名前に変えます。135や3のような値を、関数の引数にします。DialogModes.NOをDialogModes.ALLにすると、ダイアログを出して値を選ばせられます。なお、2020年版公式ガイド75〜76ページの手順3・4にはdesc4とdesc7が混ざる記述があります。手順5の完成例はdesc7に統一されているため、途中の説明と完成例を区別してください。
スマートオブジェクトの中身の置き換えは、できますか?
スマートオブジェクトの「Replace Contents」も、記録すればAction Managerで実行できる操作です。AdobeのC++ SDKの用語表にはplacedLayerReplaceContentsという名前がありますが、Scripting Guideには書き方の例がありません。使うときは、ScriptingListenerで実際に記録してコードを取るのが確実です。
UXPでも、Action Managerを使えますか? 記事の情報は最新ですか?
UXPでは、Action Managerの代わりにbatchPlayを使います。
書き方は、関連記事「PhotoshopのbatchPlayの使い方」で紹介されています。
この記事は、AdobeのPhotoshop Scripting GuideとJavaScript Reference(本記事で参照した2020年版)にもとづいています。
掲載の3つのコードは、2026年10月20日にPhotoshop 2026(27.11.0)とWindows 11 Proで実行して確かめました。
ScriptingListenerとスマートオブジェクトの置き換えは確かめていないので、最新はAdobe公式の資料で確認してください。
