InDesign:テキストを属性ごと入れ替えるやつ

あのほら、記号や接続詞の前後の語句を入れ替える指示ってあるじゃんすか。
こういうやつ。

これ、前後の文字列で属性が違った場合、コピペで直すとテキストフレームかフレームグリッドかでペースト方式に気をつけないといけないし、ドラッグ&ドロップを利用しても2手かかる。めんどう。

なのでスクリプト書きました。

exchangeString_a_and_b.jsx
対応バージョンはCS4以降かなと想像。
ダウンロード後は “a_ 〜_b.jsx” 以外のところはわかりやすい名前に変えて大丈夫です。

えー使いかた。
前に、スクリプトのファイル名でパラメータを指定するやつってのを書いたんですが、
今回もそれです。
a__b の間の文字列がキーになります。
なので、必要に応じてファイルを複製して、中身いじらず、ファイル名だけ変えて使います。

はいテスト。「罪」と「罰」を入れ替えたい。

テキストを選択して、スクリプトをカチカチ。今回のキー文字列は「と」。

はいできた。属性もキープしてる。
やったーやったー。

もう一回テスト。

やったーやったー。

どうぞどうぞ。


……で、自身で使い勝手に疑問が湧いたのと、コメント欄にあったリクエスト分も納得なので改善してみました。

まずリクエスト分。入れ替えのきっかけ文字列が2組以上ある場合、両端を有効としてその外側で入れ替えるよう変更。
これを機に作例の誤字も直したw あとは選択範囲だけ気をつけていれば以前と同じ使用感のはずです。
これにより、きっかけ文字列が2組以上存在する時のエラー終了はなくなりました。

もうひとつ。以前は正規表現のメタ文字が使われているとエラーを吐いてました。
気づきませんでした…。
なので、せっかくなので正規表現対応としました。

入れ替えきっかけ文字列が正規表現メタ文字(. + – * / ^ | $ ! ? [ ] など)を含む場合、
“+” なら “\+”、”!?” なら “\!\?” という感じでエスケープするか、
“\Q” と “\E” で括ってください。”a_\Q+\E_b”、”a_\Q!?\E_b” って感じです。

ついでにもうひとつ。これだいじ。
入れ替えきっかけ文字列をなしにして “a__b” としておくと、実行時に入力を求めるようにしました。
これでワンタイムの面倒がなくなったね!

このとき入力した文字列はInDesign終了時まで記憶され、次回実行時には入力済み状態でプロンプトが出ます。
(22.10.20 ver_c)

9 thoughts on “InDesign:テキストを属性ごと入れ替えるやつ

  1. ありそうでなかった発想がすばらしいです。これで地味な手作業から解放されます。
    Mac InDesign 2020、2021で動作確認いたしました。バッチリ問題なしです。

    隣接する語句が対象となっていますが、離れた語句への対応は難しいでしょうか。
    (例) 地震・雷・火事・親父 → 親父・地震・雷・火事・地震
    選択した文字列の両端を入れ替え、途中はそのままにする感じです。
    身の程知らずな提案ですが、実務ではこういうケースもあると思いますのでいかがでしょうか。

    • どうもどうも。
      入れ替えというからには、
      地震・雷・火事・親父 → 親父・雷・火事・地震
      ですかね(結果のほう地震が2こありまして)。
      現状の仕様ではファイル名を「〜a_・雷・火事・_b.jsx」で実現できるんですが、
      複数ある中黒をキーにして、選択テキストの最初と最後のグループを入れ替えるという意図ですよねたぶん。
      需要はありそうですねー。
      firstMatchとlastMatchをつかまえれば現状のコードから応用ききそうですね。
      ええとヒマになったらやりますw 年明けかなー…

      • AJABON GRINSMITH さん
        はい、私の意図することはそのとおりです。

        地震・雷・火事・親父 → 親父・雷・火事・地震  で間違いありません。

        私の例が誤っていました。ちゃんと見たのになあ。
        説明用に記載したのに、逆にわかりにくくなってしまいました。すみません。

        本スクリプトは現在の仕様でもたいへん便利だと思いますので使わせていただきます。
        本文がフレームグリッドで設計されている業務が、秋頃からスタートする予定ですので大活躍の予感がしています。

  2. おおっ! 思いの外、速攻で機能がアップされているではありませんか!
    従来の機能を残しつつ、複数文字対応は嬉しいです。
    入れ替え基準文字列なし対応も、汎用性が高くなって使い勝手が良いです。
    まさに死角なしです。
    これで入れ替え指示ラッシュの怖さは克服できそうです。

    • ひとことぐらいお礼くださってもいいんですよ〜(ノ∀`)

      • 大変失礼いたしました。
        嬉しさのあまり、きちんとお礼ができていませんでした。
        本当にありがとうございました。

        来月頃から始まる定期物の案件に、大いに活用する予定です。

        • お役に立てましたら何よりですっ(´Ꙩ ̫ Ꙩ`)
          実際、段違いに便利になった感がありますね。
          きっかけ文字空欄でプロンプト出すやつだけで十分な気がします。
          こちらこそクリティカルなご提案ありがとうございました!
          (とはいえ時間があったら手を入れようとは思ってましたw)

chirico へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。

*