ドキュメント内全てのあふれ処理をしたい

[9618]ドキュメント内全てのあふれ処理をしたい 投稿者:san 投稿日:2019/05/20 13:34:09
初めて書き込みます。
InDesign CC2019/Windows10です。
タイトルの通り、ドキュメント内すべてのあふれ処理を、下げにより行いたく、下記のスクリプトを書きました。
------------------------------------------
var myItems= app.activeDocument.allPageItems;
if (myItems.length !== 0) {
var jj;
var targetObjs=[];
for (jj=0; jj<myItems.length; jj++) {
if ( myItems[jj].constructor.name=='TextFrame' ) {
targetObjs.push(myItems[jj]);
}
}
for (var i=0; i<jj; i++){
while(targetObjs[i].overflows){
//テキストがあふれている限り、環境設定に従った単位設定によりテキストサイズを0.5ずつ下げる
targetObjs[i].parentStory.pointSize = targetObjs[i].parentStory.pointSize - 0.5;
}
}
}
------------------------------------------
処理は成功したものの、処理後に必ずエラーメッセージが出ます。

undefined not an object

理由がわからないため、ご教示いただければ幸いです。
[9619]Re: ドキュメント内全てのあふれ処理をしたい 投稿者:san 投稿日:2019/05/20 18:44:23
追記です。
今回、表組は処理する必要がないので、表組以外を処理対象としています。
for (var i=0; i<jj; i++){
問題はこの行の「i<jj」ですね。
jjには整数が入りますが、何の数が入っているか理解していますかね。理解すればテキストフレームの数以上に繰り返しを実行しようとしていることが分かると思います。
[9621]Re: ドキュメント内全てのあふれ処理をしたい 投稿者:san 投稿日:2019/05/21 09:55:40
素早いご回答ありがとうございます!
ご指摘の通り、jj はalpageItemsの総数でした(恥)

i<targetObjs.length;

にしたらうまくいきました。
ネット検索したら、forで余計にループしているという記述を見つけましたが、気付けずにいてお恥ずかしい限りです。
お~まちさんのサイトで勉強させていただきます。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア