JavaScript で Illustrator の作業を自動化する


こんにちは。三浦(@nanolia)です。

今日は JavaScript で Illustrator の作業を自動化した事例を紹介したいと思います。これから年賀状を作るにあたって役に立つかもしれません。

やりたいこと

先日実施された弊社主催のカンファレンスで参加者の方へのネームプレートを Illustrator で作るにあたって、そのネームプレートのテンプレートに名前や役職をそれぞれのデータを流し込むようにしました。

動いているところ

スクリプト

var embedder = (function () {

    var klass = function (file, mapping) {
        this.file = file;
        this.inputNewLine = String.fromCharCode(10);
        this.lines = [];
        this.mapping = mapping;
        this.groups = activeDocument.groupItems;
    };

    klass.prototype.readCSVFile = function () {
        var file = new File(this.file);
        if (!file.open('r', '', '')) return;

        var text = file.read();
        var lines = text.split(this.inputNewLine).reverse();
        for (var i = 0; i < lines.length; i++) {
            if (!lines[i]) continue; // 空行は除く
            this.lines.push(lines[i].split(','));
        }
        file.close();
    };
    klass.prototype.embedText = function () {
        this.readCSVFile();

        for (var i = 0; i < this.groups.length; i++) {
            var textFrames = this.groups[i].textFrames;

            for (var j = 0; j < textFrames.length; j++) {
                var field = this.mapping[textFrames[j].contents];
                textFrames[j].contents = this.lines[i][field];
            }
        }
    }

    return klass;
})();

(function () {
    var file = File.openDialog("CSVファイルを選択してください");
    if (!file) return;
    
    var e = new embedder(file, {
        // '挿入したいテキスト枠の名前': 挿入したい値の CSV のフィールド
        '名前': 0,
        '肩書き': 1
    });
    e.embedText();
})();

まとめ

  • JavaScript の簡単な知識があれば、Illustrator の作業を自動化することが簡単でした
  • JavaScript のバージョンは EcmaScript 5 とは程遠く、古き良き JS のコードを書かないといけない
  • 今回のスクリプトを応用すると名刺や年賀状の宛先などでも使えそう

参考にした URL

  • http://helpx.adobe.com/jp/illustrator/using/automation-scripts.html
  • http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/pdf/illustrator/scripting/illustrator_scripting_guide_cs5.pdf
  • http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/pdf/illustrator/scripting/illustrator_scripting_reference_javascript_cs5.pdf
  • http://www.openspc2.org/book/IllustratorCC/