Illustrator CS5で文字を置換するスクリプト

イラレCS5での話ですが、置換ダイアログを出すところまでははアクションに登録できるものの、置換する文字の組み合わせは記録されません。
常に同じ文字を置換したくても、アクションでは対応できないのです。

仕方がないのでスクリプトをおさらいすることに。
検索するといろいろ出てくるのですが、文字を操作するスクリプトは大抵
activeDocument.selection
を使用しており、文字を選択していることが前提となっているので使いにくいことこの上ないです。
そこで、ドキュメント内全てのオブジェクトからテキストかどうかを判定して、置換に掛けるように組み直してみました。
ファイル名を「relpacement.jsx」とでもして保存すれば使えます。

var data = {src:"あ", dst:"い"};
var targetObj = [];

// ドキュメント内からテキストのみを取り出す
var docObj = activeDocument;
for(var i=0; i<docObj.pageItems.length; i++){
	typ = docObj.pageItems[i].typename;
	if (typ != "TextFrame") continue; // テキスト以外は無視
	targetObj.push(docObj.pageItems[i]); // 対象を格納
}

// テキストの該当文字を置換
for(var i=0; i<targetObj.length; i++){
	var regSrc = new RegExp(data.src, "gm");
	targetObj[i].contents = targetObj[i].contents.replace(regSrc, data.dst);
}


CS5では正常に動いていますが、CCはでは不明です。
そもそもアクションに記録できるようになっているのかな?
CS6以降なら、スクリプトの実行もアクションに登録できるらしいので、さらに楽になりますね。
CS5ではいちいちファイルを指定しないとだめです。

2 thoughts on “Illustrator CS5で文字を置換するスクリプト

  1. はじめまして。Illustratorのスクリプトで文字の置換が出来ないか探していたらこちらに行きつきました。
    この記事のスクリプトについてお聞きしたいことが2つあるのですが
    ①複数の言葉を置換するにはどうすればいいでしょうか?あ→い、う→え等。
    ②あ→いの場合、「あ」が含まれていると途中のものも全て置換されてしましますが、「あ」の時は「い」に置換するが、「あいうえお」の時の「あ」は置換しない場合はどのようにすればいいのでしょうか?
    スクリプトについてド素人の為、変な質問だと思いますが宜しくお願い致します。

    • 調べていないので仮定の話、正規表現に対応していればできるとは思います。
      Perl表記であれば、
      s/あ(?!いうえお)/い/g
      ということになるでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です