仕事でAdobe® Photoshop®を使っていると、時間の短縮のために自動化する必要が出てきます。
アクションで自動化するのは簡単です。
しかし、場合によってはアクションで記録するのが困難な操作を自動化したいこともあります。
ここでは、アクションで不可能な作業をJavaScriptで自動化する方法をご紹介します。
Photoshopの簡単な操作はアクションで自動化できる
Photoshopにはアクションという機能があります。
アクションの記録を開始し、Photoshopで自動化したい操作をし、アクションの記録を終了すれば、Photoshopの操作が一つのアクションとして記録できます。
記録したアクションを再生すれば、同じ作業が自動で行えます。
アクションで条件分岐も少しできる
自動化するとき、横向きの画像なら幅の寸法、縦向きの画像なら高さの寸法を変更する、など条件分岐をしたい場合がよくあります。
以前のバージョンのPhotoshopでは、アクションで条件分岐をすることはできませんでしたが、最近のバージョンはアクションで簡単な条件分岐が使えるようになっています。
アクションでは複雑な条件分岐やファイルの操作などができない
簡単な条件分岐はアクションの機能でできますが、複雑な条件分岐はできません。
また、開いているファイルのファイル名を変えるなど、ファイルの操作もアクションだけでは難しいです。
ところが、Photoshopを使った作業を自動化する場合、複雑な条件分岐やファイルの操作をしたい場合がよく出てきます。
JavaScriptでPhotoshopの操作を自動化できる
Photoshopの操作は、JavaScriptなどを使って自動化することができます。
ExtendScript Toolkit は開発を終了し、今はVisual Studio Codeを使用
以下には「ExtendScript Toolkit」の使い方を書いていますが、現在は「ExtendScript Toolkit」は開発を終了し、「Visual Studio Code」の拡張機能「ExtendScript Debugger」を使用することになったようです。
アドビのサイトに「ExtendScript Toolkit は ExtendScript Debugger 1.1.0 に代わりました。」と書いてありました。
詳しい人が書いたウェブの記事に従って「Visual Studio Code」を入れて、「Visual Studio Code」の画面で「ExtendScript Debugger」を検索してインストールして、概ね「ExtendScript Toolkit」を使っていたときと似たような感じでスクリプトを作れました。
参考記事
- Photoshop と Catalina | macOS 10.15|Adobe
- Visual Studio Code – コード エディター | Microsoft Azure
- Photoshop でのスクリプト|Adobe
大まかな説明は「Adobeスクリプティング入門」に書いてある
PhotoshopをJavaScriptなどを使って自動化する手順は、「Adobeスクリプティング入門」(Adobe Intro to Scripting.pdf)というPDFファイルに書いてあります。
PDF「Adobeスクリプティング入門」は、Macの場合はおそらく以下のような場所にあると思われます。
JavaScriptでPhotoshopを自動で動かす手順
ExtendScript Toolkit.app で、自動化用のスクリプトを書く
JavaScriptなどを使って自動化するには、「ExtendScript Toolkit.app」でスクリプトを書きます。
「ExtendScript Toolkit.app」は、Macの場合はおそらく以下のような場所にあります。
「ExtendScript Toolkit.app」で直接再生する
「ExtendScript Toolkit.app」でそのまま再生すれば、書いたスクリプトがすぐ実行されます。
実行されて、Photoshopが勝手に動作してスクリプトで指示してある作業内容が行われます。
Photoshopから実行する
JavaScriptを保存する
通常はPhotoshopから実行したい場合が多いでしょう。
PhotoshopからJavaScriptを実行できます。
書いたJavaScriptを「●●●●.jsx」などの名前を付けて保存します。
Macの場合ならスクリプトを以下のような場所に保存します。
保存した後にPhotoshopを起動します。
そうすると上記の場所に保存したJavaScriptのファイルがPhotoshopに認識されます。
PhotoshopからJavaScriptの実行
例えば、自動で操作したいファイルをPhotoshopで開きます。
[ファイル > スクリプト]と進むと先ほど保存したJavaScriptが表示されているので、目的のJavaScriptを指定します。
そうすると、JavaScriptが実行されて、自動で操作が行われます。
できるだけ手軽にJavaScriptで自動化を行う方法
JavaScriptを作るには時間がかかる
JavaScriptを使うと色々と複雑な作業を自動化することができます。
その反面、JavaScriptを1個作るのにも、よほど手慣れた人でない限りはかなり時間がかかります。
アクションの自動化だけでは足りず、JavaScriptでもう少し複雑な作業を自動化したいものの、ややこしいScriptを書いている時間はない、という場合が多いのではないでしょうか。
JavaScriptとアクションを組み合わせると手軽
JavaScriptを作った上、アクションと組み合わせて使うと、それほど時間をかけずに手軽に自動化を行うことができます。
たとえば、今開いているファイルのファイル名の末尾に文字を追加してファイル名を変更した画像を作る、など、アクションではできない操作を、JavaScriptで書いて、保存します。
次に、Photoshopのアクションで操作を記録していきます。
アクションではできない操作の部分は、[ファイル > スクリプト]から先ほど作って保存したJavaScript「●●●●.jsx」を選んで実行します。
さらに続きのアクションを記録して、記録を終了します。
このようにすると、アクションで可能な作業は通常どおり記録され、アクションでは不可能でJavaScriptを使った箇所は「●●●●.jsxを実行する」、という内容がアクションに記録されます。
このアクションを実行すれば、「●●●●.jsx」を実行した箇所は「●●●●.jsx」が実行され、それ以外の部分は通常どおり記録した操作が実行されます。
このように、アクションでは記録できない条件分岐やファイルの操作を1個の部品としてJavaScritptで作っておいて、一連の自動化の操作自体はアクションで記録すれば、アクションだけではできないもう少し複雑な操作まで自動化することができます。
なおかつ、自動化の操作全体はアクションで作っているだけなので、JavaScriptだけで作るよりも簡単につくれて、時間もかかりません。
難点 ものすごく複雑な自動化はできない
上記の方法はあくまで、アクションだけでは無理だけれども、比較的簡単な自動化、という範囲の作業ができます。
一方、複雑な条件分岐や複雑なファイル操作などになってくると、JavaScriptで書かないと無理だと思います。
JavaScriptで自動化するためのJavaScriptの書き方は、その道の詳しい人が書いたブログ記事などがたくさんあります。
以上、アクションで不可能な作業をJavaScriptで自動化する方法をご紹介しました。
参考記事