正規表現検索置換スクリプトの選択範囲指定
[9556]正規表現検索置換スクリプトの選択範囲指定 投稿者:ただ 投稿日:2018/12/06 14:49:19
Windows7
InDesignCS5.5です。
以前、HTMLタグの入ったテキストの正規表現検索置換でお世話になりました。
この仕事の派生で、逆に
「InDesignで組んだテキストデータをHTMLタグ囲み文字に
直した状態のデータ」を納品してほしい(要はデータベースに組み込むつもりと思われます)、
という依頼が出てしまいました。
実現したいのは「選択しているテキストの内、特定の文字スタイルを< >タグ囲みにして返す」というもので、
動作自体はするのですが、どうしても「ドキュメント全体」が対象となってしまい、思った動作になりません。
正規表現検索置換のスクリプトで「選択しているテキストだけ」を対象に検索置換させる、という方法はないのでしょうか?
一応、拙い構文で見苦しいと思いますが、
以下がスクリプトになります。
//正規検索初期化
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
//検索オプション
app.findChangeGrepOptions.widthSensitive = false;
//文字スタイル「下付き」を<SUB>囲みに戻し文字スタイル「処理済み」をあてる(重複処理防止)
app.findGrepPreferences.findWhat = ".+";
app.findGrepPreferences.appliedCharacterStyle = "下付き";
app.changeGrepPreferences.changeTo = "<SUB>$0</SUB>";
app.changeGrepPreferences.appliedCharacterStyle = "処理済み";
app.changeGrep();
//選択範囲を対象
var text = app.activeDocument.selection;
for(var i = 0; i < text.length; i++) {
text[i].changeGrep();
}
最後の「選択範囲を対象」の構文が間違っているのだと思うのですが、調べても正解が出てこないのです…。
InDesignCS5.5です。
以前、HTMLタグの入ったテキストの正規表現検索置換でお世話になりました。
この仕事の派生で、逆に
「InDesignで組んだテキストデータをHTMLタグ囲み文字に
直した状態のデータ」を納品してほしい(要はデータベースに組み込むつもりと思われます)、
という依頼が出てしまいました。
実現したいのは「選択しているテキストの内、特定の文字スタイルを< >タグ囲みにして返す」というもので、
動作自体はするのですが、どうしても「ドキュメント全体」が対象となってしまい、思った動作になりません。
正規表現検索置換のスクリプトで「選択しているテキストだけ」を対象に検索置換させる、という方法はないのでしょうか?
一応、拙い構文で見苦しいと思いますが、
以下がスクリプトになります。
//正規検索初期化
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
//検索オプション
app.findChangeGrepOptions.widthSensitive = false;
//文字スタイル「下付き」を<SUB>囲みに戻し文字スタイル「処理済み」をあてる(重複処理防止)
app.findGrepPreferences.findWhat = ".+";
app.findGrepPreferences.appliedCharacterStyle = "下付き";
app.changeGrepPreferences.changeTo = "<SUB>$0</SUB>";
app.changeGrepPreferences.appliedCharacterStyle = "処理済み";
app.changeGrep();
//選択範囲を対象
var text = app.activeDocument.selection;
for(var i = 0; i < text.length; i++) {
text[i].changeGrep();
}
最後の「選択範囲を対象」の構文が間違っているのだと思うのですが、調べても正解が出てこないのです…。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)