DTP駆け込み寺
  1. [5461] InDesignCS3をJavascriptで動かしたいので えも 2009/08/06 13:51 *
    1. [5465] Re: InDesignCS3をJavascriptで動かし たけうちとおる 2009/08/06 16:24
      1. [5473] Re^2: InDesignCS3をJavascriptで動 えも 2009/08/06 18:28

[ 返信 ]

InDesignCS3をJavascriptで動かしたいので

InDesignCS3をJavascriptで動かしたいので

Javascriptを作ったのですが、意図した通りに動いてくれません。
分かる方いらっしゃいましたら教えて頂きたいのですが、よろしくお願いします。

やりたい事:InDesign内の全ページにあるグラフィックフレームを別レイヤーに移動したい。

環境:MacOSX InDesignCS3 Javascript

このスクリプトを実行すると、いくつかのグラフィックフレームが残ってしまいます。(ランダムで残るものが違う)
前半の部分の新規レイヤー作成を削除して、後半の部分の作成レイヤーに移動させる部分だけを何回も繰り返し実行すると、最終的にはすべて移動します。
一回の実行で出来ないでしょうか?
26行目の条件文(オブジェクトがグラフィック属性だったら)と
27行目のそのオブジェクトを前半部で作成したレイヤーに移動させる命令がうまく機能してないように感じます。
何か方法がありましたら宜しくお願いします。

[5461] えも (2009/08/06 Thu 13:51) mail

[ 返信 ]


Re: InDesignCS3をJavascriptで動かし

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

[ 返信 ]


Re^2: InDesignCS3をJavascriptで動

番号が移動するんですね。
大変たすかりました、ありがとうございます。

[5473] えも (2009/08/06 Thu 18:28) mail