|
MacOSX10.4.11 CS5.0.4です
通常 set Sel to selection で選択されいてるものが取得できますが このなかで、text frame のみに処理させたいとき class を見てひとつづつって考え方でよいのでしょうか。 グループ化されているときはgroupなので、それを取り出して repeatで処理させるってことでしょうか。 1回のグループ化だと set Sel to text frames of selection で取り出せたり するのですが、一緒に選択している他のtext frameが反応してくれません。 このへんの考え方がいまいちよくわかっていないのですが… よろしくお願いいたします。
|
No.2311 2009/01/27(Tue) 17:03:18
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / せうぞー |
|
|
|
>class を見てひとつづつって考え方でよいのでしょうか。 そうですね。 ちょっと冗長な感じですが、こんな感じ。 #whoseが使えるともっとラクなんだけどなぁ。
tell application "Adobe InDesign CS4" tell document 1 repeat with i in selection if class of i = text frame then my do_it(i) else if class of i = group then set my_textFrame to my get_textFrame(i) repeat with ii in my_textFrame my do_it(ii) end repeat end if end repeat end tell end tell
--やりたいこと to do_it(obj) tell application "Adobe InDesign CS4" tell document 1 set fill color of obj to swatch "aka" end tell end tell end do_it
--group中のテキストフレームを返す to get_textFrame(group_obj) set tmp_lilst to {} tell application "Adobe InDesign CS4" repeat with i in page items of group_obj if class of i = group then repeat with ii in all page items of i if class of ii = text frame then set tmp_lilst to tmp_lilst & ii end repeat else if class of i = text frame then set tmp_lilst to tmp_lilst & object reference of i end if end repeat return tmp_lilst end tell end get_textFrame
|
No.2314 2009/01/27(Tue) 20:19:55
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / shinji |
|
|
|
せうぞーさん、ありがとうございます。 ブログもいつも拝見させていただいてます。
無事、text frameが取り出せました。 それで理解できない部分があるのですが、 サブのget_textFrameでrepeatが2回まわってますが 1回目がpage itemsで、2回目がall page itemsとなっていますが これで、なぜ何重にもグループ化されていても処理できるのでしようか よろしくお願いいたします。
|
No.2315 2009/01/27(Tue) 22:17:56
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / せうぞー |
|
|
|
あ、この場合、 all page items of group_obj のループだけでもいいみたい。ちょっと混乱していました。すいません。
to get_textFrame(group_obj) set tmp_lilst to {} tell application "Adobe InDesign CS4" repeat with i in all page items of group_obj if class of i = text frame then set tmp_lilst to tmp_lilst & object reference of i end if end repeat return tmp_lilst end tell end get_textFrame
|
No.2316 2009/01/27(Tue) 22:31:47
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / せうぞー |
|
|
|
そもそも、最初は再帰的にグループを処理しようとしていたんです。 ループが簡易になるなら、こんな感じで組み込んだ方がいいですね。 たびたびすいません。
tell application "Adobe InDesign CS4" tell document 1 repeat with i in selection if class of i = text frame then my do_it(i) else if class of i = group then repeat with ii in all page items of i if class of ii = text frame then my do_it(ii) end if end repeat end if end repeat end tell end tell
--やりたいこと to do_it(obj) tell application "Adobe InDesign CS4" tell document 1 set fill color of obj to swatch "aka" end tell end tell end do_it
|
No.2317 2009/01/27(Tue) 22:38:02
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / shinji |
|
|
|
せうぞーさん、簡易版ありがとうございます。
all page itemsってグループ化が何重になっていても 関係なく返すのですね…便利です でもなんだか、それでいいのかなとか考えたりしますが まぁ、いいか indesignって用語の数が多いので探すのがたいへんです 特にAppleScriptに関する資料とか、なかなかないですね どこかに詳しいリファレンスがないものでしょうか …もちろん日本語での解説がついたもの
|
No.2318 2009/01/27(Tue) 23:13:47
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / PsychoCat |
|
|
|
all page items はグループ化やインラインフレームが入れ子の状態で何階層にも重なっていてもページアイテムがゲットできて便利ですね。
ところで、特定のプロパティを持つページアイテムの参照を得るにはフィルター参照するととても早いのですが、every page item でしか使えません。 all page items ではフィルター参照が効かないようです。repeat構文を使って順に深く潜っていくしかないようです。
しかし every page item of all page items とすると対象としているオブジェクトの階層以下、何階層あろうと全てフィルター参照併用でゲットできます。こんな便利な式があるのですが、欠点があります。第一階層のページアイテムが取得できないのです。そこで2段階で取得します。
下のサンプルはセレクトして対象としているのは1つだけです。1つのオブジェクトに内包するテキストフレームに限れば、繰り返し構文を使わず取得することができます。セレクト時に複数アイテムをターゲットにするなら、その部分だけ繰り返せばいいのだと思います。内包するアイテムは繰り返し構文の必要はありません。
tell a_groupを片方ずつコメントアウトして試すと面白いと思います。
========= set every_textFrames to {}
tell application "Adobe InDesign CS4" tell active document set a_group to item 1 of selection set black_color to swatch "Black" end tell tell a_group try set every_textFrames to every_textFrames & (every page item whose class of it is text frame) end try end tell tell a_group try set every_textFrames to every_textFrames & (every page item of all page items whose class of it is text frame) end try end tell repeat with t in every_textFrames select t set fill color of t to black_color delay 1 end repeat end tell =========
助長的で読みにくいと思いますが、http://psychocat.net/scriptNote/article.php?id=36 が参考になればうれしいです。私の昔のブログです。
|
No.2320 2009/01/28(Wed) 09:53:51
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / shinji |
|
|
|
PsychoCatさん、解説ありがとうございます。
every page item of all page items って曲者ですね。 まだ、はっきり理解できてません ブログの方も読ませていただきます…って 以前RSSで見ていたはずなんですが 実際、その場に当たらないと覚えられないみたいです
|
No.2324 2009/01/29(Thu) 00:01:05
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; ja-JP-mac; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / iketch |
|
|
|
every item をかませると whose が使えるようになるようです。 そうすると、以下のように記述できます。
tell application "Adobe InDesign CS3" tell document 1 try set fill color of every item of selection whose class is text frame to swatch id 12 end try try set fill color of every item of all page items of selection whose class is text frame to swatch id 12 end try end tell end tell
(しっかりした検証を取ってないので、うまくいかない場面があったらごめんなさい)
私もここで初めて all page items という便利なものを知りました。 勉強させてもらいました。
|
No.2340 2009/02/02(Mon) 03:10:54
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / PsychoCat |
|
|
|
iketchさん、こんにちは。
上にあるiketchさんのサンプルには set fill color of every item of selection whose class is text frame to swatch id 12 がありますが、every item of all page items 一回で取れますよね? every page item ではなくて、every itemだけでよかったんですね。 気がつきませんでした。ありがとうございます。
|
No.2344 2009/02/02(Mon) 18:03:07
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / shinji |
|
|
|
iketchさん、ありがとうございます。
whose 使えますね。 every page item と every item の違いってなんなんでしょうね。
まとめてポンとやりたいときは、whose で取得した方が便利ですね。 ただ、今回取得した text frame に個別に処理をさせるので、 先にせうぞーさんが提示していただいたものでも、速度的には あまりかわらなさそうですね。 今まで、quark でしかやってこなかったので InDesign は難しいです。 でも、quark より安定しているかもしれませんね。根拠はないですが… 提示していただいたスクリプト、使わせていただきます。
|
No.2346 2009/02/02(Mon) 22:23:12
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / iketch |
|
|
|
shinjiさん、どういたしまして
私は以下のように理解しています。
“every page item of PageItems_A” は 「PageItems_A の一階層下にある page item すべて」、 “every item of PageItems_A” は 「PageItems_A すべて」という結果を返す。
通常 every item of はなくても同じ結果を返すので省略するが、whose を用いる場合は every 〜 of が必要となる。 (ここら辺はアプリケーションによって違うかもしれないので注意!!)
PsychoCatさん、こんにちわ(こんばんわ)
all page items of selection は「選択されているオブジェクトに含まれる(内包する) page item すべて」となり 選択されているオブジェクト自身が含まれないので2回に分けることにしました。 (ブログ見てました。!!)
|
No.2347 2009/02/03(Tue) 03:23:22
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; ja-jp) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|
Re: [AppleScript]選択されているtext frameのみに処理させたい / PsychoCat |
|
|
|
あー、わかりました。 私は選択するトップ階層をグループオブジェクトで試していたので、テキストフレームだけを選択するテストにおいて誤解してしまったんですね。
Document、もしくは Pageなどをトップエレメントとして、そこに含まれるオブジェクトをターゲットにするなら一度の every item of all page items で操作できるわけです。これでスクリプトがスマートになります! (^^) ほんとありがとう。
> (ブログ見てました。!!) これって、昔のブログかしら? 今のヘタレ英語ブログかしら? どちらにせよ、うれしいです。
|
No.2348 2009/02/03(Tue) 09:44:19
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1
|
|