Amazonで商品を見るセール会場へ

Photoshopスクリプト(jsx)│Action Managerの読み方|executeAction・charIDToTypeID・stringIDToTypeID

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

関数変えるもの
charIDToTypeID4文字のコード("Embs" など)→ 実行時の ID
stringIDToTypeID文字列の名前("pixelScaleFactor" など)→ 実行時の ID
typeIDToCharID実行時の ID → 4文字のコード
typeIDToStringID実行時の ID → 文字列の名前
Photoshop JavaScript Reference(2020年版)をもとに作成

ScriptingListener の記録には、両方が混ざって出てきます。

意味を調べたいときは、typeIDToStringID で文字列の名前に変えると、読みやすくなります。

alert( typeIDToStringID( charIDToTypeID( "Embs" ) ) );

上の1行は、4文字のコードを文字列の名前に変えて表示する書き方の例です。

Photoshop 2026(27.11.0)で、文書を開いていないホーム画面から実行すると、「emboss」と表示されました。

スクリプト警告の窓に「emboss」と表示されている
2026-10-20撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。typeIDToStringIDの1行を、文書を開かずに実行したときの表示。

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枚)は、別のスクリプトで作ったので確認に含めていません。

結果は、実行の前後にヒストリーと色をスクリプトで読み取って比べました。

記録したコードは窓を出さずにエンボスをかける

練習用の画像の実行前と実行後を並べた画像。実行前は青い四角と赤い円の色付きの図形、実行後は灰色の地に図形の輪郭だけが浮き出たエンボス
2026-10-20撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。記録したエンボスのコードを[参照…]から実行した前後のカンバス。窓は出ずにエンボスがかかった。

「記録されたコードを読む」のコードを実行すると、[エンボス]の窓は出ずに、すぐに画像全体へエンボスがかかりました。

ヒストリーには「エンボス」が1つ積まれ、平らな所は灰色(#808080)になりました。

関数にしたコード(emboss(135, 3, 100))も、開き直した同じ文書で実行すると、記録したコードとまったく同じ画像になりました。

DialogModes.ALLにすると値の入った窓が出る

関数にしたコードのDialogModes.NOだけをDialogModes.ALLに変えて実行しました。

角度135、高さ3、量100が入ったエンボスの窓と、「エラー 8007: ユーザーにより操作がキャンセルされました」のエラーの窓
2026-10-20撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。DialogModes.ALLに変えて実行したときの窓と、[キャンセル]を押した後のエラー。

[エンボス]の窓が開き、角度135°・高さ3pixel・量100%と、コードで渡した値が最初から入っていました。

高さを10に変えて[OK]を押すと、変えた値でエンボスがかかりました。

[キャンセル]を押すと、「エラー 8007: ユーザーにより操作がキャンセルされました」が出て、画像は変わりませんでした。

[キャンセル]はスクリプトのエラーとして返るので、窓を出すコードでは、キャンセルされたときの扱いも決めておきます。

文書を開かずに実行するとエラーになる

「エラー 8800」と「「エンボス」コマンドは現在使用できません。」が表示されたエラーの窓
2026-10-20撮影。Adobe Photoshop 2026 (27.11.0)、Windows 11 Pro (10.0.26200)。文書を開かずに、記録したエンボスのコードを実行したときのエラー。

文書を開いていないホーム画面で、記録したエンボスのコードを実行すると、「エラー 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公式の資料で確認してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次