[ 掲示板に戻る ]

記事No.9618に関するスレッドです

ドキュメント内全てのあふれ処理をしたい / san
初めて書き込みます。
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

理由がわからないため、ご教示いただければ幸いです。

No.9618 2019/05/20(Mon) 13:34:09
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763

Re: ドキュメント内全てのあふれ処理をしたい / san
追記です。
今回、表組は処理する必要がないので、表組以外を処理対象としています。

No.9619 2019/05/20(Mon) 18:44:23
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763

Re: ドキュメント内全てのあふれ処理をしたい / お〜まち URL
for (var i=0; i<jj; i++){
問題はこの行の「i<jj」ですね。
jjには整数が入りますが、何の数が入っているか理解していますかね。理解すればテキストフレームの数以上に繰り返しを実行しようとしていることが分かると思います。

No.9620 2019/05/21(Tue) 09:35:26
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.158 Safari/537.36 Vivaldi/2.5.1525.43

Re: ドキュメント内全てのあふれ処理をしたい / san
素早いご回答ありがとうございます!
ご指摘の通り、jj はalpageItemsの総数でした(恥)

i<targetObjs.length;

にしたらうまくいきました。
ネット検索したら、forで余計にループしているという記述を見つけましたが、気付けずにいてお恥ずかしい限りです。
お〜まちさんのサイトで勉強させていただきます。

No.9621 2019/05/21(Tue) 09:55:40
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763