Illustratorのスウォッチに登録してある特色を、グローバルプロセスカラー化&別の色に置き換えるスクリプトを書いてみる

 たとえば下のようなファイルがたくさんあるわけです。スウォッチには特色(特色指定)と強調色(グローバルプロセスカラー指定)がキーカラーとして設定してあって、これを章ごとに切り替えることになりました。

 デザインに先行して原稿を進めていたもので、すでにいくつかの章にわたって30個ほど作業済みのファイルがあります。これらを全部指定されたキーカラーに変更するわけです。あと、既存のデータフォーマットを流用して作成開始したから特色指定になってますけど、これも解除してグローバルプロセスカラーに統一しておかなきゃいけません。

 で、これがまあ、ちまちま1個ずつ書き換えていけばいいかと思って着手してみたら、意外とめんどくさいんですよね。めんどくせーめんどくせーと思いながら手入力してたら、CMYK値を打ち込む時に入力ミスを犯しそうになりました。これはまずい。

 どうせこの後原稿を書き進めていく時にも、メニューいっぱつで各章のキーカラーが設定できたら便利だろうし、後々「やっぱキーカラー変えたい」なんてこともないとは言えないよなあ。
 だったら…ってことで、まとめて変換できるスクリプトを組んでおくことにしました。

スポンサーリンク

とりあえず現在開いているファイルの変換スクリプトを書いてみる

 前は「入稿用に開いている全ファイルのテキストをアウトライン化した上でIllustrator8形式に変換して保存して閉じていく」とか「スマートスクロールのトラックボールでキャンバスを掴んでドラッグできるようにする」とか色々書いていたんですが、久しぶりだからIllustratorのオブジェクト構造を今ひとつ覚えていません。なんか参考になるとこないかなあと探してみたら、下記のページが出てきました。

 ふむふむなるほど、これを参考に「今開いているファイルの”特色”と”強調”という名前のついたスウォッチを指定されたCMYK値に置き換えてプロセスカラーにする」スクリプトを作ってみます。こんな感じかな。

function setColor(c, m, y, k)
{
    var tmpColor = new CMYKColor();
    tmpColor.cyan = c;
    tmpColor.magenta = m;
    tmpColor.yellow = y;
    tmpColor.key = k;
    return tmpColor;
}
activeDocument.spots["特色"].color = setColor(20, 75, 45, 0);
activeDocument.spots["強調"].color = setColor(85, 0, 100, 10);
activeDocument.spots["特色"].colorType = ColorModel.PROCESS;
activeDocument.spots["強調"].colorType = ColorModel.PROCESS;

 どこまで省略した書き方ができるか把握してないので、確実に書けるまだるっこしいコードになっていますけど、そこは見逃してやってください。

 このコードを書いたテキストファイルを「2章の特色変換.js」という名前で保存して、「C:\Program Files\Adobe\Adobe Illustrator CC 2019\Presets\ja_JP\スクリプト」フォルダに置いてやると、次回起動時からIllustratorの[ファイル]→[スクリプト]メニューの下に「2章の特色変換」という項目が追加されます。

 実行してみると…

 ちゃんと色が変わって、特色指定になっていた特色スウォッチもグローバルプロセスカラー指定に置き換わりました(スウォッチの右下△内にあるドットが消えてるとプロセスカラーになってる証)。今回の仕事は5パターン分キーカラーがあるので、このjsファイルをその個数分コピーして「1章の…」「3章の…」と名前を付け直した後、中身の色コードだけ書き換えておきます。
 本当はファイル名を見て自動判定して…ってすると美しいんですけど、少しややこしくなる分手間がかかるし、そこまでやるほどの価値はないかな。エラー処理すらやるつもりないし(たとえば現状だと指定された名前のスウォッチがないファイルだった場合、多分エラーで実行が止まっちゃう)。

今開いているファイルをすべて変換するスクリプトも書いておく

 新規にファイルを作った時に、確実にキーカラーを設定するという用途では上述のスクリプトでいいんですが、後でまとめて別の色に換えたくなったという時は、あれだと1個ずつ処理しなきゃいけないので確実にめんどくさいことになります。

 なので続いては複数のファイルを一気に変換できるスクリプトも作っておくとしましょう。
 具体的にはIllustratorで開いている複数のファイルをすべて処理して、最後に「いくつやりましたよ」と処理の終了を告げてくれる感じでよいのではないかと。

function setColor(c, m, y, k)
{
    var tmpColor = new CMYKColor();
    tmpColor.cyan = c;
    tmpColor.magenta = m;
    tmpColor.yellow = y;
    tmpColor.key = k;
    return tmpColor;
}
for (var nDocIndex = 0; nDocIndex < documents.length; nDocIndex++) {
    documents[nDocIndex].spots["特色"].color = setColor(20, 75, 45, 0);
    documents[nDocIndex].spots["強調"].color = setColor(85, 0, 100, 10);
    documents[nDocIndex].spots["特色"].colorType = ColorModel.PROCESS;
    documents[nDocIndex].spots["強調"].colorType = ColorModel.PROCESS;
}
// 処理終了を告げる
alert(documents.length + " 個のファイルを処理しました");

 今度はこれに「すべてを2章の特色変換.js」と名前をつけて保存した後、先ほど同様Illustratorのスクリプトフォルダに放り込みます。
 試しに複数開いた状態で実行してみたら、ちゃんと思った通りの動作になってくれました。これも、先ほどと同様に5パターン分ファイルをコピーして中のCMYK値だけ書き換えておきます。

 なんだかんだと試してたら時間を食って本スジの仕事があまり進みませんでしたけど、「楽するための作業だけは常に全力」が信条のナマケモノなので、清々しい気分です。

スポンサーリンク