ちくちく日記

DTP系備忘録。真面目にやってます。

InDesignでAppleScript-リファレンスの取得-

InDesign で選択されているオブジェクトを全部しらべ、特定の条件に当てはまるオブジェクトがあったら処理をする」というスクリプトを書こうと思ったのですが。
選択しているすべてのオブジェクトのリファレンスをとろうとして

tell application "Adobe InDesign CS2_J"
tell active document
get all page items of selection
end tell
end tell

としても、単独オブジェクトのリファレンスはget all page itemsではとれず、空の項目{}が返ってくる。
グループ化されたり、インライングラフィックなどになっているものならそれぞれのオブジェクトリファレンスが返ってくる。

selectionの条件をつけずに

tell active document
get all page items
end tell

とした場合なら、全てのオブジェクトのリファレンスが返ってくるのだけど、selectedな単独オブジェクトのリファレンスをとりたいのならget object referenceで

tell active document
get object reference of selection
end tell

とするしかない。これだとグループ化されたものやインラインフレームの中のオブジェクトのリファレンスはわからない。

つまり、選択されているいろいろな条件(グループ化されたりインラインになってたり、単独だったり)の複数オブジェクトのリファレンスを一度でとる事はできず、get all page items of selectionで単独のオブジェクト以外のリファレンスを取得し、さらにget object reference of selectionで単独のオブジェクトのリファレンスをとる必要がある。

get object reference of selectionだと、必要のないグループオブジェクトのリファレンスまで返ってきちゃうので、そのまま処理すると無駄が多い。
なんか条件をつけて単独のオブジェクトだけを取り出せればいいのだけど。
…っていうかget all page items of selectionでちゃんと単独オブジェクトのリファレンスも返ってくればこんな面倒な事しなくてもいいのに。
なんでこんな仕様なんだろう?