InDesign:検索置換の重箱隅系スクリプト

どもども。
少ーしずつ、ようやくゆるんできました。何がって激務が。もう二徹とかいやですわ。

大物のスクリプトはもうほとんど書けません。。続きをやろうとする頃にはもう内容忘れてるんですものorz
何するにも忙しすぎるのはいけませんわ。

そこで5行以内のスクリプトですよ(ドヤッ)。
やっぱりね、技術力よりも発想力がキモです。何でって、ハデでラクだから。
おいしいとこ持ってった人の勝ちだと思います、というわけではないけども。
重箱の隅は四つだけとは限りません。探せばまだまだいくらでも出てくるはず。
(いや、三段重ねなら十二箇所…)

というわけで今回の数行スクリプト。えーと2行。
あまりにしょぼいのでダウンロードとかありません。各自ESTKやエディタにコピペしてください。

app.findTextPreferences.findWhat = [app.findGrepPreferences.findWhat, app.findGrepPreferences.findWhat = app.findTextPreferences.findWhat][0]; app.changeTextPreferences.changeTo = [app.changeGrepPreferences.changeTo, app.changeGrepPreferences.changeTo = app.changeTextPreferences.changeTo][0];

 

何する物ぞ

♪猿の軍団、猿の軍団
で、ちょっと英単語的に見てもらうと内容モロワカリのマルバレなんですが、
がんばって正規表現ひねって検索欄&置換欄にタカタカ打ち込んで、検索ボタンをターンッ!とドヤ顔で叩いたら
間違えてGREPじゃなくてフツウのテキスト検索の方に入力してたよワハハトホホ

20140528
…という時に、テキスト-GREP間の検索・置換ワードを入れ替えるスクリプト。
経験がないとは言わせません。恥ずかしがらずにお使いくださいまし。

ついでに

で、瞬発力で書いたモノなので万全な内容ではなく、あくまで検索語・置換語だけの入れ替えにとどまっています。 ので、これを検索オプション全体まで網羅する物を、どれだけラク&ズルで書けるか試してみたい方いますか。
要はプロパティの内容をまるっと交換するだけなんですが、ちょっとしたお作法が必要みたい。
というわけで、挑戦者募集。 10行以内で。(とか書いておくと最適解なんか用意してなくてもきっといろいろ集まるのだ、たぶん)
うぬのフンドシを我が胸中に!


で、早々にコメント欄にて、あるふぁ様からお答えが。
自分でまったく同じに書いて試したはずが動かなくてボツにしたのに、なぜ動いてるorz
CCとCS3で確認できました。職場のCS6でもう一度確認してみなければ。

検索語、置換語、検索スタイル、置換スタイル、がスワップしてくれます。
実用性じゅうぶん^ 人のフンドシすばらしいw

app.findGrepPreferences.properties=[app.findTextPreferences.properties,app.findTextPreferences.properties=app.findGrepPreferences.properties][0];
app.changeGrepPreferences.properties=[app.changeTextPreferences.properties,app.changeTextPreferences.properties=app.changeGrepPreferences.properties][0];

あるふぁ様、ありがとうございますー

8 thoughts on “InDesign:検索置換の重箱隅系スクリプト

  1. はじめまして
    同じく2行で書きましたぞ
    propertiesの使い方こんなのでいいのか甚だ疑問ですが、それっぽく動いてくれてますw
    app.findGrepPreferences.properties=[app.findTextPreferences.properties,app.findTextPreferences.properties=app.findGrepPreferences.properties][0];
    app.changeGrepPreferences.properties=[app.changeTextPreferences.properties,app.changeTextPreferences.properties=app.changeGrepPreferences.properties][0];

  2. わあ、コメント欄、文字でっか。。。orz
    (じゃなくて)
    わあ、ありがとうございますっw どうもはじめまして。
    実は元記事を投げる前に自分で同様に書いてみてたんですけど、
    よくわからないエラーが出てしまって、
    「なかった事」にしたんですけども。
    今CCとCS3で試したらばっちり動きますね。なんだったんだろう。
    ロックされたオブジェクトとか非表示レイヤーとかのオンオフはどうもpropertiesの外のようですね。こいつらは入れ替わらなかった。。
    でも元から適宜切り替えしない場所なのでウチ的には満足です^
    実用させていただきます。ありがとうございますー。

    そうか、2行目を1行目の配列に押し込んでしまえば1行に(やめれw

  3. findTextPreferencesはあくまで検索するモノの設定であって
    検索の仕方の設定はfindChangeTextOptions/findChangeGrepOptionsの方みたいですね。

    それにしてもpropertiesって全然別のオブジェクトのプロパティでも、都合よく書き換えられるとこだけ書き換えてくれるんですねぇ…
    こいつぁ便利かも

    • ですねえ。そんで短絡的にpropertiesをテレコしたらどうか、と思いついたわけです。自分で書いたやつは動きませんでしたけど。

      で、わかったんです。
      propertiesを間違えてpreferencesと打ってしまってました。。
      DOMぐらい見ろよって話でしたorz

      findChangeGrepOptionsのほうは、
      findChangeGrepOptions.properties内のプロパティをforで回せばなんとかなるはず。でもここまではやっぱり不要ですやね。

  4. propatiesと書いてエラーを出した自分が言うのもなんですけど、プロパティだのプレファレンスだのオプションだのセッティングだの、何が違うねんって感じですよねー

    findChangeGrepOptionsの方も上のやり方でいけてしまいましたよ。検索と置換ダイアログの表示にはすぐには反映されないみたいですが。

  5. ああ、一度パレット閉じないとダメかもですね。
    見た目と実際の設定が食い違う瞬間が一番こわいですねえ。
    自分専用だったらいいんだけども。。

  6. いろいろ調べたのですが
    上の方法では箇条書きの「記号スタイル」(bulletChar)と「指定レベル以降で番号をふり直し」(numberingRestartPolicies)の設定が書き換えられないようです。
    この2つはpropertiesで書き換えられないかわりに、preferencesからアクセスできるんですね。

    以下は釈迦に説法かもですが、
    結局あるオブジェクトの設定をまるごと書き換えようと思ったら、
    まずpropertiesを書き換えて、さらにループでpreferences[i].propertiesを書き換えて、オマケに再帰関数でも使ってpreferences[i]の中のpreferencesまで書き換えてやればカンペキかなーと思っていろいろやってたんですが、どうにも思ったように動かないことが多すぎる。
    properties関連はバグの宝庫かも…。あまり信頼性が必要なスクリプトでは使わないほうが良さそうというのが自分の結論です。

    ちなみにある文字の書式をpropertiesで丸ごと別の文字にコピーするっていう実験では、スタイルが一番最後に設定されるらしく、オーバーライド分が全くコピーされない。これはコピー元のpropertiesからappliedParagraphStyleをdeleteしてやることで回避できました。(確認した環境はすべてWindows版CS6です)

    • あー、試すというか確かめる余裕がちょっとないんですが、
      このての物は一度x=hoge.properties.toSource()を変数にしておいて、
      読み込みにfuga.properties=eval(x)というのがわりと有効だったりします。
      それでも正規表現スタイルなんぞが絡むといくらかはエスケープ処理が必要な予感がびしばししますが。
      掘り下げる余裕なくてほんますんまへんま。

あるふぁ へ返信する コメントをキャンセル

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

*