InDesign:Selection Filter 大幅書き換え

ただ単に書き直しただけです。使用感は全く前回といっしょです。自己満足です。

 でもまあその、コードが100行も縮まったんならいいんじゃないの、ぐらいの。
改変内容は、「おそ松、チョロ松、カラ松、トド松、市松、十四松」(順番てきとう)
 の「松」を共有しただけです。こうしておけば後で項目追加する時も「ガッツ石」と書くだけで済む、と。

InDesign CS3-CS5対応
MacOSX 10.4.11(CS3)
MacOSX 10.6.4(CS4)
WindowsXP(CS3、CS5)で動作確認済み。




と、事あるごとに「反響の無さが公開への餅ベイションを下げる」旨、女々しくもガタガタゆってきましたが、
 POT1.3の時に、なんか礼節も常識もまたいだようなメールよこされてイラッとしたので
  もうどうでもいいかなって。エサは欲しいけど不味いのは要らないというか。
いや、ひょっとしたら、あのメールでウチの人間を試していたのかも。企業スカウトが。きっとそうだ。


18 thoughts on “InDesign:Selection Filter 大幅書き換え

  1. はじめまして。
    とある内容を網羅できるようなスクリプトがないかと探してまして(自分では全くかけないので)、偶然にこのページにたどり着き、目的とは違うのですがこれも大変お役立ちのようだと勝手にダウンロードさせていただいたものです。
    inDesignCS5.5 (Mac OSX 10.6.6) を
    使っています。
    大変、便利だと思うのですが、
    スクリプトを実行→ダイアログボックス表示→
    必要条件を選択、抽出した後、
    ダイアログボックス?が画面上から消せないのです。
    (左上の赤丸をクリックしても、ダイアログボックスが消えません。)
    ドキュメントを終了し、また開くと
    Selection Filter_dの
    ボックス表示がされたままです。
    これを消すにはどうしたらよいでしょうか?
    解決方法をご教示ください。
    宜しくお願いいたします。

  2. ご利用ありがとうございます ^
    ご質問の件に関わる事ですが、
     現在の勤務先の業績不振により全オペレータに平等な設備が行き届かない環境という事情から常駐マシンはCS3までしかなく、CS5以上の動作確認は有志任せ、というビンボー状態が久しく続いております。
     ごく最近になりようやくCS5.5を(席を一時的に移動の上)扱う事がたまに出てきたのですが、公開済みの物、自分用で未公開の物を含むいくつかのスクリプトが動作しない事を認識しました。
     各スクリプトの紹介記事で逐一動作確認状況を更新するのがちょっとじゃない手間で、ついさぼっておりました。ご不便をおかけしております。
    以上の理由から、CS5.5を使えるマシンが空くまで、いましばらくお待ちください。
    1〜2日あれば確認まではなんとか。。不具合確定の場合はそこからまた中1日ほど。。
    あ、マペットはバートが好きです(ハズしたかも)

  3. あ その空き待ちまで、間に合うなら情報をいただけますか。
     不具合箇所特定の時間短縮になります。
    ・Selection Filterパレット操作前、ドキュメント上に選択範囲があったか
    ・フィルタリング項目は
    ・抽出、除外、どちらを操作したか(抽出でしょうけど一応)
    ・操作後「Result : x個のオブジェクトを抽出(除外)しました」が出るか
    ・パレットは閉じられないまでも、その後パレット内の操作は機能するか
    お手数をおかけする形になりますが、よろしければご協力下さい。
     よろしくなければそのままお待ちください ^

  4. おはようございます。
    早速のお返事ありがとうございました。
    私は、最近(去年10月)から会社でインデザインを扱うようになり(それまでは全然別の仕事をしておりました。)、スクリプトはおろか、機能そのものさえまだまだ分かっていないことが多いのですが、
    そんな素人の質問に快くお返事いただき、本当にありがたいです。
    さて、スクリプトの件ですが、
    少し進展?がありましたので先にそちらをご連絡いたします。
    ①昨日、ボックスはドキュメントを閉じても、表示が消えませんでしたが、インデザインを終了するとインデザインと画面から消えました。
    ②本日、昨日と同じドキュメントを開き、スクリプトを実行したところ、今度はフィルターのボックス自体が表示されませんでした。(つまり実行されない状態)
    が、スクリプトをファイル名称を変更してスクリプトパネルに再度入れなおし、当該ドキュメント上から操作するとダイアログボックス表示され、正常に動作しました。
    ・Selection Filterパレット操作前、ドキュメント上に選択範囲があったか
    ==>テキストフレームが10個ほどありましたが、全く選択をしていない状態で、実行しました。
     ・フィルタリング項目は
    ・抽出、除外、どちらを操作したか(抽出でしょうけど一応)
    ==>抽出を操作しました。
    ・操作後「Result : x個のオブジェクトを抽出(除外)しました」が出るか
    ==>出ました。
    ③②で2,3の動作を試してから、左上の赤丸をクリックすると昨日はできなかった、ドキュメント上での「ボックスを閉じる」操作もできました!。
    というので、本日は軽快に動作しております。
    尚、
    昨日の現象発生時、お問い合わせの状況は、以下のようなものでした。
    ・パレットは閉じられないまでも、その後パレット内の操作は機能するか
    ==>機能してたんだと思います。スプレッドを変えてテキストフレームの抽出しか選択していなかったので、他の項目を続けて抽出できたかどうかは分かりません。スプレッドを変えても、各スプレッドごとの抽出はできました。
    ともあれ、今日になって見れば、自然解決?していたようでお騒がせして申訳ありません。
    ところで、各項目をスプレッド単位ではなく、ドキュメント上でまとめて抽出(選択)することは可能でしょうか?
    昨日探していたスクリプトは、
    「ドキュメント上の、全てのオブジェクトボックス(テキストフレームや画像配置したフレーム)を一括で選択する」というものだったのです。
    更に質問を重ねてしまって申し訳ありません。
    後半の質問は、元々作られたスクリプトとは関係ありませんので、スルー頂いても結構です。
    自分で勉強しなければと思うのですが、私の扱っている内容が非常に限られた分野であるせいか、期待するようなスクリプトを作る参考になるような参考書がなかなか見つかりませんもので。。。。
    とりいそぎ、ご報告させていただきます。
    クッキーモンスターのクッキーを、一度食べてみたいですね!(大はずし)。
    朝から長文失礼致しました。

  5. sesameさん、とりゃえず無事に動作しているようで何よりです。
    ひとまず、確認しなくて大丈夫っぽそうですね?
     動作不良を起こした原因はよくわかりませんが、その時のドキュメント上のオブジェクト構造に関係するかも知れません。
    がー、再現できないと手が出ませんので、一旦忘れていいでしょうか ^;
    と、ご相談の件について
    結論から言うと、InDesignの仕様上できません。
    InDesignの「選択」は、アクティブなスプレッド上でのみ可能です。よそのスプレッドのオブジェクトを選択するとスプレッドのアクティブっぷりが切り替わり、前のスプレッドの選択は解除されます。スクリプトで無理めにやるだけやってみると「異なるスプレッド上の 2 つのオブジェクトを選択することはできません。」と叱られてしまいました。
    代替案として、
    ドキュメント全体の選択対象を特定レイヤーに隔離する というのは可能ですが、オブジェクトの重なり順が崩れる問題、対象がグループの一部だったりした場合など予期せぬトラブルが起こる可能性は大々の大です。。よっぽど単純なレイアウトであればOKでしょうけど。
    あとホンカーも好きです。

  6. 更なる、早速のお返事ありがとうございます!。
    >がー、再現できないと手が出ませんので、一旦忘れていいでしょうか ^;
    もちろんです!大変申訳ありません!!!
    私の存在もろとも忘れてください!!!!
    InDesignではドキュメント上で一括処理ができないのですね。。。知りませんでした。どうりでそのようなスクリプトがないはずですね。
    ショックですが、仕方ないですね。
    一括でできたらとても助かるのですが。。。
    ためしにやっていただいたとのこと。
    こちらもお手数おかけいたしました。ありがとうございました。
    どこかで、ドキュメントの総ページ数を取得し、ページ数の数だけ(多分1ページが終わったら次のページに移って)特定の処理(文字あふれのチェックと修正だったかな?)のスクリプトをみかけたような気がしたので、応用できないかなと思いました。
    ただ、高度なスクリプト(もちろん今回のfilter他-zさんが作られているのも非常に非常に高度なスクリプトですが)だと思うので、
    とにかく、応用できるレベルに早くなれるようまずは1から勉強する暇をみつけたいと思います。(そこから???)
    とりいそぎ、お礼まで。
    本当にありがとうございましたm(_ _)m
    ええっと、やはりクッキーモンスターが、、(爆)

  7. あー、補足しときます。
    いわゆる「一括処理」は、数個ある処理対象(内部で一定の順で並んでいる)を、頭から1個ずつ順繰りにこなします。
    スクリプトの記述的に「○個目やる、次○個目、という順繰り処理」ではなく「一気にドーン」という書かれ方をしていたとしても、それを受け取ったアプリケーション本体は結局その内部で1個ずつ順繰りに処理します。処理が軽い場合は、あたかも一瞬で全体をイッキにやったかに見えるわけですが、決して最初のオブジェクトから最後のオブジェクトが一斉にヨーイドンはできません。
    つまり、処理がスプレッドごとに分かれていても手順としては大差ありません。
    重要なのは、「選択した後、何をするか」です。そこから先の処理は必ずありますよね?
     そしてスクリプトの場合、処理対象を選択する必要がないケースがほとんどです。
    一般に、オブジェクト(ページアイテム)はドキュメント上に出現した順に内部で並べられ管理されています。
    それを順番に「処理対象としての条件に合うか」判断し、合えば目的の作業をする、合わなければ無視して次のオブジェクトを、を最後のオブジェクトまで繰り返します。
    SelectionFilterは「目的の作業」が「選択する」なのです。
     毎回違う作業用途でいろいろする為に「選択する」、あるいはごちゃごちゃしたスプレッドから目的のオブジェクトを「探す」という使い方ですね。
    今回sesameさんが求めるツールは「どういう物に対して」「どういう処理を行う」を見据えて探してみてはいかがでしょうかね ^
    有志が余技でネット上に転がしてあるスクリプトに探し当たらない場合は、見積もりさせて頂きますのでメールください。
    クッキーバニーというキャラクターをご存じであれば。。

  8. なるほど、、、、、大変勉強になりました。
    とてもご丁寧に、ありがとうございました。
    目的の動作は
    ・ドキュメント上のすべてのフレームを選択し、
    「行送りを欧文ベースラインに変更する」
    ・ドキュメント上のすべてのフレームを選択し、
    「フレームを内容にあわせる」
    この二つの操作をそれぞれ別のスクリプトで作成したいと思っております。
    スプレッドごとだと、ドキュメントによっては数百ページもあったりするものもあるので、追いつかないのです。
    引き続き、ネットの海に放していただいている先達の皆様の貴重なスクリプトを探して、応用できるように勉強に取り組みたいと思います。
    本当にご親切にありがとうございました。
    クッキーバニー、検索しました。
    ユニバーサル系キャラ???

  9. …ぐらいの物であれば親切な掲示板でどなたか書いてくれそうなもんですが、めんどいのでここで。
    あ、タダでいいですよ ^
    >・ドキュメント上のすべてのフレームを選択し、
    >「行送りを欧文ベースラインに変更する」
    これは一行で書けます。
    >・ドキュメント上のすべてのフレームを選択し、
    >「フレームを内容にあわせる」
    これはグラフィックフレームという事でしょうか。
    以下をコピペして試してください。たぶん動きます。確認してません。多少それっぽく動いたとしても100%は保証できません。
    var doc=app.activeDocument; //前面のドキュメント
    doc.stories.everyItem().leadingModel=LeadingModel.ROMAN; //行送りの基準位置
    for(var i=0; i<doc.allGraphics.length; i++){ //グラフィックを順繰り
    doc.allGraphics[i].fit(FitOptions.FRAME_TO_CONTENT); //フレームを内容にうんこする
    }
    こちらも参考にして下さい。こういう場や掲示板に、中身だけ書かれたスクリプトを使う方法などもわかるようになってい(ると思い)ます。
    http://pub.ne.jp/ajabon/?entry_id=3904952
    クッキーバニーはクッキーモンスターに耳と鼻だけ追加したお手軽キャラです。
    本国の番組で見ただけで、大阪で会えるかどうかは知りません “^
    では。

  10. おはようございます。
    わぁぁ!!
    ありがとうございます!!!
    大変助かります!!!!
    しかもタダで、、、、本当にありがとうございます!!。
    感謝の気持ちを込めて、キーボードを打たせていただいております。
    教えていただいた貴ブログのurlを開くと、
    「かわいいスクリプトのねだり方」
    今回かわいくねだれたでしょうか?
    (そんなつもりはなかったんです、、、、、
    、、、、いえいえ、ほんとはちょっとヒントでもいただければうれしいなーと思ってたのは内緒です、、、)
    おねえさんではなくて、おばちゃんなので申し訳ないです。。。
    (典型的な大阪のおばちゃんです)
    勉強のためにも、貴ブログを隅から隅までじっくり読ませていただきますね。
    また、分からないことがあれば、コメントで質問させていただくかもしれませんが、うっとうしければスルーしてください。
    クッキーバニー、
    バニークッキーと勘違いしてました。
    クッキーバニーで検索しても見つかりませんでした、しょぼん。
    クッキーモンスターに耳と鼻追加!!ということはやはり胴体はモンスターのままなんですね!!!
    想像がつかないけど、見たら可愛いのかな?
    卵ご飯にマヨネーズかけたら、意外と美味しい的な感じでしょうか???(全然違う)
    ともあれ、ほんとうにありがとうございます!!!

  11. マペットは米国の物なのでエーゴで検索するのがスジです!
    ふつうに出たですよ
    http://www.youtube.com/watch?v=4wqxFJj9V7U

  12. お疲れ様です。
    早速、使わせていただきました。
    それぞれ、2つのjsxファイルに格納しました。
    「フレームを内容にあわせる」スクリプトはばっちりなのですが、
    なぜか、「行送りの基準位置を欧文ベースラインに変更」のスクリプトを実行しようとしたら、
    ”javaScriptエラーです!
    エラー番号:55
    エラー文字列:オブジェクトはプロパティまたはメソッド”ROMAN”をサポートしていません。
    変換方式:main
    ファイル:/ 〜gyou_okuri.jsx
    行:2
    ソース:doc.stories.everyItem
    ().readingModel=LeadingModel.ROMAN;//行送りの基準位置 ”
    というエラーメッセージが出て、実行できませんでした。バージョンが違うからなのでしょうか。。。
    でも、「フレームを〜」ができるだけでも大助かりです!後は、またぼちぼち頑張ってみます!!!
    あ、クッキーバニーみました!!!
    可愛いですね♪。あの耳で、もふもふされたい〜


  13. テストもせず投げてしまいました(あやまらないw)
    正しくは
    doc.stories.everyItem().leadingModel=LeadingModel.LEADING_MODEL_ROMAN;
    でした。。
    もう1つ訂正
    クッキーバニーは、クッキーモンスターに耳と鼻「と前歯」を以下略

  14. おはようございます。
    無事、「行送り」スクリプトも希望通り動きました!!すごい!!!
    本当にありがとうございましたm(_ _)m m(_ _)m m(_ _)m
    前歯、耳に夢中で気づかなかったです、、、別にいらないかな(^‐^; (ほっとけって話ですね、すみません)

  15. インデザインの勉強部屋のBBSで教えていただいて
    早速使ってみました
    おぉ〜。本当に抽出してくれる!
    と感動しました。
    スクリプト、自分では書けないので
    本当に助かりました
    ありがとうございます
    ……ただ、
    全てのページを一度に網羅してくれたり
    アンカーポイントのついたものも選択してくれたりしたら
    もっと便利になるのになと思いました。
    余計なことを言って申し訳ないです。

  16. どもども。
    主目的が「選択する(しなくする)」止まりなとこはご了承下さい。
    複数のスプレッドにまたがって選択する事ができない、
    アンカー付きオブジェクトはそれ1こしか選択できない、
    というInDesignの仕様に沿った物ですので。。選択のしようがないんですわ。。
    スクリプトで処理するのならそもそも選択は不要となりますので、ドキュメント上を一括でアレコレする物とはまるきり別物ってことですね。
    自分で書ける人ならコレを併用してスプレッドごとにドキュメント全部処理させる事は可能です ^

  17. お返事いただきありがとうございます。
    >というInDesignの仕様に沿った物ですので。。選択のしようがないんですわ。。
    >スクリプトで処理するのならそもそも選択は不要となりますので、ドキュメント上を一括でアレコレする物とはまるきり別物ってことですね。
    そうなんですね。
    勉強になります。
    >自分で書ける人ならコレを併用してスプレッドごとにドキュメント全部処理させる事は可能です ^
    やはり自分で勉強することも大事ですね^^;

  18. >>自分で書ける人ならコレを併用してスプレッドごとにドキュメント全部処理させる事は可能
    >やはり自分で勉強することも大事ですね
    あとは、おねだり上手になるという道も…
    ただ、ここのところ23時帰りとか続いてるのでウチはムリですw

(z-) へ返信する コメントをキャンセル

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

*