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ではいちいちファイルを指定しないとだめです。

Illustrator CS5で文字を置換するスクリプト」への5件のフィードバック

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

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

  2. 初心者です。失礼いたします。質問があります。
    「人」を「万人」に置換する場合、
    「人数」の文字は「万人数」になってしまいます
    「100人」「10人」「1人」→「100万人」「10万人」「1万人」 数字に絡んだ文字のみ置換したいのですが どうすればいいでしょうか?
    よろしくお願いいたします。

    • 提示された条件のみへの対応でよければ、
      「人」を「万人」に変換した後、「万人数」を「人数」に変換して戻せばよいかと。

      正規表現であれば、
      s/([0-9]+)人/$1万人/g

  3. 初めまして。
    可能であれば、アクティブレイヤーのみ置き換えには出来ますか?
    色々試したのですが…私ではどうにも。
    よろしくお願いいたします。

コメントを残す

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