Mac OS 10.5.8/InDesign CS4
Javascript
を使用しています。
ある特定のレイヤー上にある画像ボックスやテキストボックスを
スクリプトで縮小や移動をしたいと思っております。
そこで、関係のないレイヤーをロックした状態でスクリプトを動かすと、
「オブジェクトがロックされています」とエラーが出てしまい、縮小や移動ができません。
すべてのレイヤーのロックを解除した状態でスクリプトを動かすと、エラーが出ずに縮小や移動が可能です。
ただし、その場合は、別のレイヤー上にある、
関係のない画像ボックスやテキストボックスまで対象となってしまいます。
これは本意ではありません。
ネットや書籍で色々と調べたのですが、解決方法が見つかりませんでした。
アドバイスのほどよろしくお願いいたします。
[10892] suzu (2010/11/11 Thu 11:59)
myLayer = app.activeDocument.layers;//ドキュメント上のレイヤーを取得
alert(myLayer[0].name);//ひとつめのレイヤー名を表示
myTf = myLayer[0].textFrames;//ひとつめのレイヤーにあるテキストフレームを取得
alert(myTf.length);//ひとつめのレイヤーにあるテキストフレーム数を表示
ヒントになれば幸いです。
[10898] dot (2010/11/11 Thu 14:30)
特定のレイヤーに対しての処理ができるのですね。
あきらめかけていたので、とても嬉しいです。
ありがとうございました。
実際にテストしてみまして、特定レイヤー上のアイテムだけを
操作することができました。
追加で質問なのですが、希望としては、
1ページ単位または見開きページ単位で、
特定レイヤー上のアイテムを処理したいと思っております。
具体的に申しますと、1ページ単位(あるいは見開きページ単位)で
そのページにある、特定レイヤー上のアイテムをすべて選択してグループ化し、
縮小と移動を実行し、そして、次のページに移動して、
同じ処理を繰り返すといったことをしたいです。
全レイヤーに対してであれば、上記の処理は実現できています。
しかし、ある1ページの特定のレイヤーにあるアイテムに対しての処理が実現できません。
お教えいただいた方法ですと、特定のレイヤーにあるアイテムを
すべて操作できますが、全ページに渡ってアイテムを操作できてしまいます。
これを1ページ単位(あるいは見開きページ単位)に限定することは
できるのでしょうか?
お教えいただいたことを応用すれば実現できるかと思い、
試行錯誤してみましたが、行き詰まってしまったため
お教えいただければ幸いです。
よろしくお願いいたします。
[10901] suzu (2010/11/11 Thu 18:10)
これは自信ありませんが…
myPage = app.activeDocument.pages;//ドキュメント上のページを取得
myLayer = app.activeDocument.layers;//ドキュメント上のレイヤーを取得
myTf = myPage[0].textFrames;//最初のページのテキストフレームを取得
alert(myTf[0].itemLayer.name);//最初のページのひとつめのテキストフレームがあるレイヤーを表示
ページ単位で処理していくとなると、
ページ上のアイテムがどのレイヤーにあるかを調べて、
if文で処理するしかないのかな?と。
[10903] dot (2010/11/11 Thu 21:10)
ご返答が遅くなり誠に申し訳ありませんでした。
お教えいただいた方法でバッチリでした。
if文の処理により、レイヤーを指定しながらページ単位で
アイテムの移動や変倍をするスクリプトを実現できました。
dotさん、本当にありがとうございました。
[10973] suzu (2010/11/18 Thu 20:28)