ここんとこレジュメのスクリプトばっかりで遊んでないので、ちょっぴりハマったことをメモ。
ドキュメント中のテキストフレーム内の文字を選択した状態で、そのテキストフレームと同じページに新たにオブジェクトを作りたかった。
var myDoc = app.activeDocument; var mySel = myDoc.selection[0]; var myIndex = mySel.parentTextFrames[0].parentPage.index; myDoc.pages[myIndex].textFrames.add();
見開きドキュメントの3ページ目以降で実行すると、1ページ目か2ページ目にできてしまって、肝心のオブジェクトを選択しているページにフレームを作ってくれません。おっかしーなー?と思ったわけです。
調べればなんてことなくて、parentPage
の親、つまりparentPage.parent
はスプレッドオブジェクトなんですね。だからparentPage.index
を取得すると、そのスプレッドの何ページ目かを取得するだけで、ドキュメント全体の何ページ目かは取得できないのでした。
で、よくよく考えたら別にparentPage
でページオブジェクトを取得できたんなら、わざわざindex
を取得しないでもそのままページオブジェクトとして使えばいいよね??という、割とどうでもいいことで悩まされていたのでした…。
var myDoc = app.activeDocument; var mySel = myDoc.selection[0]; var myPage = mySel.parentTextFrames[0].parentPage; myPage.textFrames.add();
これで選択しているオブジェクトと同じページにテキストフレームが作れました。
オブジェクトのparent
大事。