Photoshop 25.0ベータ版UXPのAction Recording
**2023年 12月追記 Action Recordingは製品版でも使えるようになりました。**
季節は夏ですがそろそろAdobe製品のメジャーアップデートの足音が聞こえてきます。みなさん如何お過ごしでしょうか。今回Photoshop25.0のベータ版のUXPのAPIになります。
Action Recording
25.0の新しいAPIのAction Recordingが公式ドキュメントに公開されました。これはScriptで宣言された関数の内容をそのままアクションとして記録できてアクション作成後はユーザー自身の手でアクションを実行できるというものです。流れとしては以下のようになります。
- アクションパネルからアクションお記録ボタンを押してRecをオンに
- Action RecordingメソッドをPluginから実行。
- Action Recordingメソッドに登録された関数がアクションに登録される。
ただし以下の注意事項があります。
- 生成元のPluginがインストールされてないと登録されたアクションが実行できない。
- 関数の宣言は常にトップレベル(global)でなくてはなない。
実際のコード
recordActionメソッドにオブジェクトとしてアクション名、実行する関数名をString型の値として渡します。
actionHandlerがアクションに登録する関数です。methodNameプロパティに関数名をString型の値として渡しています。ちなみに二つ目のオブジェクトは関数実行時に渡す引数になります。サンプルコードの場合は{“prop”: “value”}がそれにあたります。
Recボタンを押してrecordActionメソッドを実行、成功すると以下のようにアクションが登録されます。
これでアクションを実行すると関数が発火されます。ちなみにPluginがインストールされてない場合は以下のように警告が出ます。
ちなみに登録する関数はglobalでないといけないのに加えてアロー関数でも発火しませんでした。おそらくスコープが関係しているのでしょうか。
引数の更新 Photoshop25.1より?
*2023年10月2日追記
一度登録したアクションの関数の引数(上記のサンプルコードの場合は{“prop”: “value”}がそれにあたる)の値も更新できます。更新する場合は以下のように関数の最後に値を返す必要があります。
この状態でアクションパネルのメニューバーからアクションの再記録を実行します。
この後、記録されたアクションを実行するとこの二つ目の引数の{“prop”: “value”}が{“newProp”: “newValue”}に更新されます。関数が返す値がundefinedの場合はアクションの再記録を実行しても上書き、更新はされません。
enableMenuRecording
Action Recordingでは実際にrecordActionメソッドを実行させる必要がありましたがmanifest.jsonにenableMenuRecordingをセットするとPluginのcommandメニューから実行、登録した関数をアクションに記録させることができます。
commandに関しては詳しくはこちらを参照してください。
それでmanifestへの登録ですが以下のようになります。
ただしcommandのidと関数名が一致してないとアクションが実行されないので気をつけてください。
ここまでできたらアクションよりメニュー項目を挿入を選んで上部のプラグインメニューから該当のcommandを選びます。
以上Action Recordingです。
ただし2023年8月現在使えるのはPhotoshopベータ版のみとなります。