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