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

Photoshop│batchPlayの使い方|Copy As JavaScriptのコードをUXPで動かす

batchPlay は、UXP のスクリプトやプラグインから、Photoshop のコマンドを直接実行する仕組みです。

ExtendScript の executeAction にあたり、DOM で書けない操作に使います。

  • 書き方:require(‘photoshop’).action.batchPlay([記述子], オプション)。Promise が返る
  • 記述子は _obj(コマンド)・_target(対象)・_ref(対象の指定)で書く
  • Photoshop の状態を変えるなら executeAsModal の中で実行する
  • コードは、アクションパネルの「Copy As JavaScript」で取れる(開発者モードのとき)

この記事は、Adobe の UXP for Photoshop の公式ドキュメント(developer.adobe.com と GitHub の AdobeDocs/uxp-photoshop、2026年9月29日に確認)にもとづいています。

当方には Photoshop が無いため、実行の再現は含まず、画面の名前は英語版の表記です。

目次

公式の例

選んでいるレイヤーを隠す、公式ドキュメントの例です。

const {app, action, core} = require('photoshop');
async function hideActiveLayer() {
  return await action.batchPlay([{
    _obj: "hide",
    _target: [{_ref: "layer", _enum: "ordinal"},
              {_ref: "document", _enum: "ordinal"}]
  }], {});
}
let result = core.executeAsModal(hideActiveLayer, {commandName: "Hide Layer"});
キー意味
_obj実行するコマンドの名前(hide など)
_target対象。具体的なもの(レイヤー)から順に、住所と逆の順で並べる
_ref対象の種類(layer・document など)
_enum: “ordinal”今選んでいるもの

executeAsModal

Photoshop の状態を変えるコマンドは、executeAsModal の中で実行しなければなりません。

commandName は必ず指定し、処理中のプログレスバーの上に表示されます。

コードを取る方法

Copy As JavaScript

  1. Photoshop の開発者モードを有効にする(UDT の Developer Mode)
  2. アクションパネルで、アクションか、その中の手順を選ぶ
  3. パネルのメニューから「Copy As JavaScript」を選ぶ
  4. クリップボードに、executeAsModal と batchPlay の形のコードが入る

「Copy As JavaScript」は、開発者モードが有効なときだけメニューに出ます。

Record Action Commands

開発者モードでは、「Plugins → Development → Record Action Commands…」で、画面の操作を記述子としてファイルに記録できます。

通知を見張る

action.addNotificationListener([‘all’], …) で、実行されたコマンドを見張る方法も公式に載っています(開発者モードのときだけ動く)。

Alchemist

記述子を調べるプラグインとして Alchemist がよく使われますが、Jaroslav Bereza さんが作ったもので、Adobe の公式のツールではありません。

オプション

オプション働き
synchronousExecution終わるまでスクリプト全体を止めて値を返す(なるべく使わないよう案内)
continueOnErrorエラーが出ても続ける(初期値 false)
immediateRedrawすぐ画面を描き直す(初期値 false)
historyStateInfoPhotoshop 2022 で非推奨。executeAsModal の履歴の機能を使う
Adobe「batchPlay」をもとに作成

記述子ごとの _options.dialogOptions では、ダイアログの出し方を “silent”(初期値)・”dontDisplay”・”display” から選べます。

ExtendScriptのコードとの対応

ExtendScript の ScriptingListener で取ったコード(charIDToTypeID・ActionDescriptor)は、そのままでは UXP で動きません。

UXP では、同じ操作を「Copy As JavaScript」で取り直すのが近道です。

ExtendScript 側のコードの読み方は、PhotoshopのAction Managerの読み方で紹介しています。

まとめ

  • batchPlay は UXP から Photoshop のコマンドを直接実行する
  • 記述子は _obj・_target・_ref。_target は具体的なものから
  • 状態を変えるなら executeAsModal の中で。commandName は必須
  • コードは Copy As JavaScript(開発者モード)で取る

参考:Adobe「batchPlay」「executeAsModal」(2026年9月29日に確認)。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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