検索置換クエリを実行する

ExtendScriptでInDesignの置換クエリを実行する 検索置換クエリ

InDesignには、検索置換の内容を「クエリ」として保存しておこことができます。

この検索置換クエリは、マウスでの作業のときはもちろんですが、スクリプトでも呼び出して実行することができるので便利です。

スポンサーリンク

ドキュメントサンプル

置換クエリ「text_あいうえお」を作成しました。
内容は以下。

  • 「あいうえお」を「まみむめも」に置換 
  • 置換形式に、段落スタイル「アイウエオ」を選択
  • ひらがなとカタカナは区別する(他のオプションも全部チェックしてみた、けど、今回は関係ないので割愛)
スクリプトを実行するInDesignドキュメント:テキストフレームに「あいうえおアイウエオ」、段落スタイル「アイウエオ」
InDesignで置換クエリ「text_あいうえお」を作成
スポンサーリンク

コードサンプル

#target indesign

// クエリの内容を呼び出す
app.loadFindChangeQuery("text_あいうえお", SearchModes.TEXT_SEARCH);
// 置換実行
app.changeText();

実行結果

InDesignで置換クエリ「text_あいうえお」を実行:段落スタイルも適用、ひらがなとカタカナの区別もok
う〜ん… 段落スタイル名は「まみむめも」にするべきだったな。ややこしい名…

サンプルコードの解説

コードの4行目で、作成したクエリを呼び出しています。

今回はテキスト置換のクエリなので、loadFindChangeQueryの第2引数にSearchModes.TEXT_SEARCHを指定しています。

指定できるのは以下です。

  • テキスト: SearchModes.TEXT_SEARCH 
  • 正規表現: SearchModes.GREP_SEARCH
  • オブジェクト: SearchModes.OBJECT_SEARCH
  • 字形:  SearchModes.GLYPH_SEARCH
  • カラー: SearchModes.COLOR_SEARCH
app.loadFindChangeQuery("text_あいうえお", SearchModes.TEXT_SEARCH);

置換の実行は、appに対して実行するとその時に開いている「全てのドキュメント」に対しての実行になります。

以下は、アクティブドキュメントに対して実行する例。

app.activeDocument.changeText();

検索パネルの表示上の注意

loadFindChangeQueryを実行すると、検索パネルに呼び出したクエリの内容が反映されます。

その際、「全角・半角を区別」や、「かなを区別」などの表示は、検索パネル上には反映されないようです。

クエリの名称も、[カスタム]となっています。

検索パネルでは、loadFindChangeQueryを実行する直前のオプション選択の状態が、そのまま表示されているので、「パネル表示を見て確認してみよう!」と思って見てみると、ちょっと混乱してしまうので、注意が必要です。

以下の画像は、「二重点線からEMダッシュ」を表示した状態で、loadFindChangeQueryで「text_あいうえお」を呼び出した直後のパネル表示です。

「かなを区別」のチェックが外れていますが、ドキュメントの例の「アイウエオ」は置換されませんでした。

InDesignの置換クエリ「二重点線からEMダッシュ」を選択
「二重点線からEMダッシュ」を選択
InDesignの置換クエリをスクリプトで呼び出した直後の検索パネル:プリファレンスはきちんと表示されない
スクリプトでクエリをロードしても、全ての情報がパネルに表示されるわけじゃない

コメント

タイトルとURLをコピーしました