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

Photoshop│外からJSXを実行する方法|WindowsのCOM(DoJavaScriptFile)とMacのAppleScript

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 ファイルを実行する
Photoshop VBScript Reference(2020年版)をもとに作成

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 tell

show 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年版)。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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