2016年11月25日

JavaScriptで複数一括置換【改良版】

DTP作業者にとっての難易度 ★☆☆☆☆(1)

2013年の9月に『複数の置換を一気に実行する』で、複数の用語を一括置換する方法について書きました。この中の『Excelと簡単なJavaScriptで複数の検索を実行する』ではInDesign上で複数一括置換をおこなうJavaScriptをご紹介したのですが、Excelを使った作業が必要となるため少々面倒だと感じていました。
そこで今回は、このJavaScriptを改良することにしました。置換リスト(置換テーブル)としてはJavaScriptファイルとは別に保存したテキストファイルを使用します。テキストファイルには「検索文字列」「タブ」「置換文字列」の形で置換リストを書いておいてください。正規表現も使用できます(InDesignのダイアログに入力するのと同じ書き方をすればOKです)。
以下、作業手順については動画をご覧ください。

JavaScriptファイルを書き替えることなく、さまざまな置換リストを使用できるので便利になったと思います。機会がありましたらお試しください。

※お試しになる際は事前によくテストをされるようお願いします。また、かならずバックアップをとってからご使用ください。


サンプルデータはこちら《2016_1125a_minimum.zip》です。

2017.6.9にアップした別ページ『JavaScriptで複数一括置換【スタイル指定機能を追加】』(ここをクリックすると別ウインドウで開きます)では、さらに改良したものをご紹介しています。検索対象の段落スタイル・文字スタイル、置換時の文字スタイル、検索範囲をダイアログで簡単に設定できます。

posted by 照山裕爾 at 03:53| Comment(4) | TrackBack(0) | InDesign-検索/置換 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
初めまして。スクリプト初心者です。
一括置き換え使わせていただいており、大変重宝しています。ありがとうございます!


一点質問なのですが、
置換した情報を別レイヤーで管理したく
手作業で検索置換をした際、その後選択ツールを選択すると置換したテキストボックスを選択できるなと思い、
app.menuActions.item('$ID/Selection Tool').invoke();
selObj = app.activeDocument.selection;
var myLayer = app.documents.item(0).layers.item("レイヤー 2")
for (var i=0;i<selObj.length;i++){
selObj[i].move(myLayer);
}
上記のような〈選択ツール→別レイヤーに移動〉の
コードを付け加えたのですが
app.changeGrep();がすべてを置換に値するため?うまくいきませんでした。

こちらを実行するのは可能でしょうか?
Posted by take at 2017年04月28日 17:33
takeさま

コメントをありがとうございます。励みになります。
私こそスクリプトがいつまでも身につかずヨチヨチでお恥ずかしい限りです。
takeさまがお書きになった1行目のようなものは使ったことがなく
「この方法でツールが切り替えられるのか」と勉強になりました。

さて、お問い合せの件を少し試してみました。
var doc = app.documents[0] ;
var myLayer = app.documents.item(0).layers.item("レイヤー 2");
var gr=doc.changeGrep();
var grl=gr.length;
for (i=0; i<grl; i++) {
gr[i].parentTextFrames[0].move(myLayer);
}
とすると、どうでしょうか。
うまくいくといいのですが……。
Posted by 照山裕爾 at 2017年05月04日 00:33
サンプルファイルをアップしました。
http://mottainaidtp.up.seesaa.net/image/test-0503.zip
ただし、このドキュメントのようにテキストフレームが連結されている場合はいろいろ問題が生じると予想されます(置換により所属するフレームが変わってしまうケース、単語が2フレームをまたいでいるケースなど)。
Posted by 照山裕爾 at 2017年05月04日 00:45
ご返信ありがとうございます。

こちらの複数一括置換のスクリプトに組み込んで
試したところ、バッチリ動きました!
テキストの連結は今のところなかったので問題なしでした。

これからもますます重宝して使わせていただきます。
本当にありがとうございました。
Posted by take at 2017年05月08日 17:07
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/444309094

この記事へのトラックバック