スクリプト、使ってますか?
Indesignにスクリプトというツールがあるのを知っていますか?手作業で行っていた作業を、自動化することができたり、繰り返しの作業が簡略化されたり、うまく利用すると便利な機能です。
何度も繰り返し行うような作業や、少し手間のかかる作業をスクリプト化しておくと、自動的に処理してくれるので、とても効率的です。

スクリプトの使い方
InDesignでスクリプトを使うには、「スクリプト」パレットを使用します。
※表示されていない時は「ウインドウ」メニュー>「ユーティリティー」>「スクリプト」で開きます。
使い方はパレット内の使いたいスクリプトをダブルクリックするだけです。

また、よく使うスクリプトにはショートカットを割り当てることも可能です。

スクリプトのしくみ
スクリプトは以下のようにテキストで記述していきます。コンピュータプログラムに似たものです。JavaScript、AppleScript、UXPScriptという3種類のいずれかの言語でスクリプトを書くことができます。

言語 | 特徴 |
JavaScript | スクリプト言語では主流、WindowsとMacの両方で使用でき、汎用性は高い。 |
AppleScript | Mac OS固有のスクリプト言語。InDesignの他に他のMacアプリケーションと連携させたりすることも可能。Windowsでは使用できない。 |
UXPScript | JavaScriptの一種でAdobeアプリの拡張機能を開発するためのプラットフォーム。 |
サンプルスクリプトをさわってみよう。
「スクリプト」パネルを開くとあらかじめ以下のようにいくつかのスクリプトが入っています。

❶Sampleフォルダ
あらかじめいくつかのサンプルファイルが入っています。
英語で書かれているので、少しわかりづらいですが。使ってみると大体の機能は理解できると思います。
スクリプト名 | スクリプトの機能 |
AddGuides | オブジェクトに沿ったガイドラインを作成(ガイドレイヤーも作成) |
AddPoints | 選択オブジェクトにアンカーポイントを追加 |
AddQRCode | QRコードを追加(Applescriptはなし) |
AdjustPageItems | ページオブジェクトを数値だけすべて移動 |
AlignToPage | ページに整列 |
AnimationEncyclopedia | アニメーションのさまざまなプロパティが設定されたボタン(6ページのドキュメント)を自動作成 |
BreakFrame | 選択したフレームのみリンク解除 |
CornerEffects | 角の効果を編集 |
CreateCharacterStyle | 選択した文字列を文字スタイルに登録 |
CropMarks | オブジェクトのまわりにトンボを作成 |
ExportAllStories | ドキュメントのすべてのテキストを、ストーリーごとにテキストファイルとして書き出し |
FindChangeByList | 「FindChangeSupport」フォルダ内のテキスト「FindChangeList.txt」を基に、テキストの検索/置換を実行(UXPScriptはなし) |
ImageCatalog | 指定したフォルダ内のすべてのグラフィックを「コンタクトシート」として配置 |
MakeGrid | オブジェクトを指定したグリッドで分割 |
Neon | オブジェクトをネオンのように装飾 |
PathEffects | オブジェクトのパスに効果を追加 |
PlaceMultipagePDF | 複数ページのPDFを一発で貼り付け(UXPScriptはなし) |
SelectObjects | 選択した種類のオブジェクトのみを選択できる |
SortParagraphs | テキストフレーム内の段落がアルファベット順にソート |
SplitStory | テキストフレームに連結されているすべてのテキストフレームの連結が解除される |
TabUtilities | タブおよびインデントを適用 |
https://study-room.info/id/studyroom/other/other16.html
などのサイトで日本語のくわしい解説を見ることができます。
❷コミュニティフォルダ
InDesignのコミュニティで作成されたサンプルファイルが入っています。
こちらも❶同様
https://study-room.info/id/studyroom/cc2020/study08.html
などのサイトで解説を見ることができます。
スクリプト名 | スクリプトの機能 |
BreakTextThread.jsx | テキストBOXの」連結を解除 |
ClearStyleOverrides.jsx | 各スタイルのオーバライドを消去 |
SnapMarginsToTextFrame.jsx | 選択しているテキストフレームに一致するよう、マージンガイドを変更する |
UnicodeInjector.jsx | 特定の字形を挿入するスクリプト |
InsertTypographerQuote | 選択したテキストを引用符で囲む |
サンプルスクリプトをカスタマイズしてみよう。
サンプルスクリプトを触ってみると、なかなか使い勝手がいいものがあります。ただ、残念ながら日本語化されていないので、使う時に少し不便なところもあります。
その1、スクリプトパネルへの表示を日本語化
サンプルスクリプトの表記が英語でわかりづらいので日本語化してみましょう。

❶スクリプトパネルを開いたら、変更したいスクリプトを選び、サブメニューから「Finderで表示」を選ぶ。

❷Finder上にスクリプトファイルが表示されるので、ファイル名を日本語に変更。

❸Indesignに戻りスクリプトパネルを見ると、メニューが日本語化されています。

その2、スクリプトを書き換えて、その他の部分も日本語化してみる
サンプルスクリプト「AddGuides」を実行すると、以下のようなダイアログが開きます。
簡単な英語なので、難しくはないですが、スクリプトの勉強を兼ねて、ここも日本語化してみましょう。
※編集をする前に、念の為ファイルのバックアップをしておきましょう。

❶スクリプトパネル>変更したいスクリプトを選び、サブメニューから「スクリプトを編集」を選びます。
❷スクリプトエディタが開いて、スクリプトの内容が編集できるようになります。
(スクリプトエディタの設定ができていない場合はここで、アラートが出るので、指示にしたがってエディタをインストールします)


※エディタはVisual studio Code(https://code.visualstudio.com/)を使用しています。使っているエディタによって見た目やアプローチは変わりますが、手順は同じです。
❸ダイアログに表示される文字を探して編集する。
探し方のコツ
スクリプトに精通している人ならば容易ですが、初心者が見つけるコツは、検索機能を使います。エディタが立ち上がったら検索メニューに文字列を入れて検索します。
いくつか候補がが出てくるので、ダイアログの表記に使われている(であろう)ところを」探して書き換えます。

最初に1箇所だけ変更してみて、うまく変わっているか確認して、よさそうであればその他の箇所も日本語化します。変更したら保存して、InDesignから実行して確認します。日本語に変換されていなければ、再びスクリプトを編集して、何度か試してみます。修正失敗した箇所は、もとに戻しておかないと、スクリプト自体が動作しなくなる可能性があるので、戻すのを忘れずに。
うまく日本語化されれば完成です。


オリジナルのスクリプトを作ってみよう。
サンプルスクリプトを使うだけでも、かなり便利なことがわかったと思います。
スクリプトの仕組みがわかったところで、次はオリジナルのスクリプトも作成してみましょう。
ただし、初心者が一からスクリプトを勉強するのは、なかなかハードルが高いと思います。ここではAIのChatGPTを使ってオリジナルスクリプトを作成してみましょう。まったくスクリプトの知識がなくても、オリジナルのスクリプトを完成させることができます。
ChatGPTを使うと、まったくの知識がなくても、いくつかのスクリプトを作ることができますが、ChatGPTは必ずしも正確ではないこと。また完璧ではないということも覚えておきましょう。ChatGPT頼みだけでは、最後まで完成しない場合もあります。やりとりをしていくことで、ChatGPTがスクリプトの解説もしてくれるので、これを機会に勉強してみるのもいいでしょう。
例題
❶地色をひくためにページサイズ(+3ミリ)の長方形を作るスクリプト。
このとき、右ページと左ページを判別して、ノド側には塗り足しをつけないようにしたい。
1、ChatGPTにアクセス
https://chatgpt.com/ にアクセスします。
2、質問欄に指示を入力
特に難しい言葉は必要なく、以下のような普通の会話文で大丈夫です。
ChatGPTへの入力例
3、スクリプトが生成されたら、全てコピーしてテキストエディタ等にコピー。
コピーできたら、JavaScriptなので、拡張子 .jsxをつけて保存します。AppleScriptの場合は.applescript。UXPScriptの場合は.idjsにします。(ファイル名は解りやすいものを)作成したファイルは、以下のフォルダに入れることでスクリプトパネルから実行することができます。
スクリプトパネルに入れるためのフォルダは2ヶ所に分かれています。

A 「アプリケーション」フォルダ
アプリケーション>Indesign○○(バージョン)>scripts>scripts Panel>Samples
になります、こちらのscripts Panel以下のフォルダに入れることで実行できます。
B オリジナルファイルを入れる「ユーザー」フォルダ
PCのユーザー名>ライブラリ>prefarences>Adobe Indesign>version○○(バージョン)>ja-jp>Scripts>Scripts Panel
になります。Finderを辿って、指定のフォルダを探すのはやや大変なので、どちらのフォルダも前章で説明したように、スクリプトパネルから「Finderで表示」を選ぶことでフォルダにアクセスできます。
AとB 2つのフォルダの違い
アプリケーションフォルダに入れた場合は、そのバージョンのInDesignでしか使えません。新しいバージョンのInDesignをインストールした場合は、またスクリプトを入れる必要があります。
ユーザーフォルダに入れると、新しいバージョンのInDesignをインストールした場合、インストール時のオプションで、そのままスクリプトも引き継ぐことができます。いちいち自分で移す必要がないので簡単です。個人で作ったスクリプトは、この「ユーザー」フォルダに入れるようにしたほうが、あとで便利です。
4、動作をチェックします。
スクリプトパネルを開いて、実行したいスクリプトをダブルクリックします。うまくいく場合と、思い通りの動作にならない場合、またエラーが出てしまう場合などあります。
5、うまくいかない時はChatGPTに戻り、修正させる。
テストでうまく動作しない時は、再びchatGPTに戻り、スクリプトを修正します。○○というアラートが出てしまう。サイズが違う、位置が違う、など、会話スタイルで修正指示を追加するだけで修正案が出てくるので、何度かやりとりすることで、完成に近づいていきます。
参考までに、今回は以下のようなやりとりを重ねて完成しました。

6、テストを繰り返して、うまく動作すれば完成。

スクリプトラベルって何?
スクリプトパネルを使っているともう一つ「スクリプトラベル」というパネルがあるのに気付くと思います。スクリプトラベルとはなんでしょうか?
スクリプトラベルは、InDesignのオブジェクト(テキストフレームや画像フレームなど)に任意の「ラベル(名前)」をつけておき、そのラベルを目印にしてスクリプトを実行させる機能です。

例題
❷特定のテキストボックスの文言をスクリプトで入れ替える

1、スクリプトラベルをつける
スクリプトラベルをつけるには、オブジェクトを選択しておいて、「スクリプトラベル」パネルをクリックして名前をつけます。

2、スクリプトを作成
ChatGPTを活用してスクリプトを作成します。
ChatGPT入力例
実行するとまず、ダイアログが開いて、そこに入力したテキストを、スクリプトラベル名「有効期限」というテキストボックスに入力するスクリプトを書いて
スクリプトが完成したら実行してみます

スクリプトラベルを使うとスクリプトで特定のオブジェクトを指定して処理することができるのがわかったと思います。テキストボックスだけでなく、画像ボックスなども対象にできるので、アイデア次第では省力化に役立つと思います。
また、今回の例題のままだと、スクリプトラベル毎にスクリプトが必要になってきますので、あまり実用的ではありません。ドキュメント内のスクリプトラベルを選択して実行できるようにスクリプトをアレンジしたり(下図)、複数のオブジェクトに対して実行できるようにすれば、さらに使い勝手がよくなるかと思います。ぜひ挑戦してみてください。