Photoshop のスクリプト(JSX)は、Photoshop のメニューからだけでなく、ほかのプログラムから実行することもできます。
- Windows:COM の Photoshop.Application の DoJavaScriptFile で JSX を実行する
- Mac:AppleScript の do javascript で JSX を実行する
- 引数は Array(…) や with arguments { … } で渡し、JSX 側では arguments[0] で受け取る
- photoshop.exe -r のような起動オプションは、Photoshop の公式文書には無い
この記事は、Adobe の Photoshop Scripting Guide と JavaScript Reference(公開されている最新の2020年版)にもとづいています。
当方には Photoshop が無いため、実行の再現は含まず、画面の名前は英語版の表記です。
Windows:COMで実行する
Windows では、Photoshop を COM(Photoshop.Application)で操作できます。
公式ガイドの VBScript の例です。
Set objApp = CreateObject("Photoshop.Application")
filename = "C:\MyFile"
DIM docRef
SET docRef = objApp.Open(filename)
objApp.DoJavaScriptFile "C:\emboss.jsx", Array(75, 2, 89)| メソッド | 働き |
|---|---|
| DoJavaScript(コード, 引数, 実行モード) | JavaScript のコードを文字列で渡して実行する |
| DoJavaScriptFile(ファイル, 引数, 実行モード) | JSX ファイルを実行する |
PowerShellから呼ぶ
公式にあるのは VBScript の例だけで、PowerShell や Python の例は公式の文書にありません。
COM は PowerShell からも呼べるので、上の VBScript を置きかえると次のような書き方になります(当方では Photoshop が無いため、動くことは確かめていません)。
$ps = New-Object -ComObject Photoshop.Application
$ps.DoJavaScriptFile("C:\scripts\emboss.jsx", @(75, 2, 89))JSX側で引数を受け取る
var angle = arguments[0];
var height = arguments[1];
var amount = arguments[2];渡した引数は、JSX の中で arguments[0] のように受け取れると、公式ガイドに書かれています。
拡張子は .jsx にする
Windows で .js をダブルクリックすると、Microsoft の JScript で実行されてしまい Photoshop が起動しないため、.jsx を使うよう公式ガイドに書かれています。
Mac:AppleScriptで実行する
Mac では、AppleScript の do javascript で、コードか JSX ファイルを実行できます。
公式ガイドの例です(<path to Emboss.jsx> は原文のままの仮の書き方で、実際のパスに置きかえます)。
tell application "Adobe Photoshop"
set theFile to alias "Application:Documents:MyFile"
open theFile
do javascript (file <path to Emboss.jsx>) ¬
with arguments { 75,2,89 }
end tellshow debugger で、デバッガーを出すタイミング(before running・never・on runtime error)も決められます。
ターミナルからは、この AppleScript を osascript で実行する方法がありますが、osascript は macOS の標準のコマンドで、Adobe の文書には書き方の例がありません。
起動時に自動で実行する
Photoshop は、起動したときに Startup Scripts のフォルダーにある JSX をすべて実行します。
Windows の場所は C:\Program Files\Common Files\Adobe\Startup Scripts CC\Adobe Photoshop です。
よくある勘違い
- photoshop.exe -r script.jsx という起動オプションは、Photoshop の公式文書には無い(-r で JSX を実行する例は After Effects のもの)
- UXP のスクリプト(.psjs)を COM や AppleScript から実行する公式の方法は見つからなかった
Photoshop のメニューから実行する方法は、PhotoshopでJSXスクリプトを実行する方法で紹介しています。
まとめ
- Windows は COM の Photoshop.Application と DoJavaScriptFile
- Mac は AppleScript の do javascript
- 引数は Array や with arguments で渡し、JSX で arguments[0] で受け取る
- 起動時に動かすなら Startup Scripts のフォルダー
参考:Adobe「Photoshop Scripting Guide」「VBScript Reference」「AppleScript Reference」(2020年版)。
