Javascriptを作ったのですが、意図した通りに動いてくれません。
分かる方いらっしゃいましたら教えて頂きたいのですが、よろしくお願いします。
やりたい事:InDesign内の全ページにあるグラフィックフレームを別レイヤーに移動したい。
環境:MacOSX InDesignCS3 Javascript
このスクリプトを実行すると、いくつかのグラフィックフレームが残ってしまいます。(ランダムで残るものが違う)
前半の部分の新規レイヤー作成を削除して、後半の部分の作成レイヤーに移動させる部分だけを何回も繰り返し実行すると、最終的にはすべて移動します。
一回の実行で出来ないでしょうか?
26行目の条件文(オブジェクトがグラフィック属性だったら)と
27行目のそのオブジェクトを前半部で作成したレイヤーに移動させる命令がうまく機能してないように感じます。
何か方法がありましたら宜しくお願いします。
[5461] えも (2009/08/06 Thu 13:51) mail
pageItemは移動すると番号が変わります。
例えば
pageItem[0]
pageItem[1]
pageItem[2]これを移動すると
pageItem[3]これの番号がpageItem[2]に変わる。そのため動かない
下のように大きい番号から下がっていくように直せばよいと思います。
for(j = pageObj[i].allPageItems.length - 1; j > -1;j--){
//例
//これは失敗する
pageObj = app.activeDocument.pages[0];
for(j = 0; j < pageObj.allPageItems.length;j++){
pageObj.allPageItems[j].move (app.activeDocument.layers[0]);
}
//こうすれば全て移動する。
pageObj = app.activeDocument.pages[0];
for(j = pageObj.allPageItems.length - 1; j > -1;j--){
pageObj.allPageItems[j].move (app.activeDocument.layers[0]);
}
[5465] たけうちとおる (2009/08/06 Thu 16:24) web
番号が移動するんですね。
大変たすかりました、ありがとうございます。
[5473] えも (2009/08/06 Thu 18:28) mail