>

【InDesign】ガイドを削除/削除する際のfor文


 現在のドキュメントからガイドを削除するスクリプトです。

var guObj=app.activeDocument.guides;
var gucount=guObj.length;
for(var i=gucount-1; i > -1; i--){//ガイドを減らしていくので後ろから繰り返し
  guObj[i].remove();
}

 何かを削除するスクリプトを初めて(じゃないような気もするけど)書いたんですが、いつものfor文(i++するやつ。インクリメント)ではちゃんと動きません。処理対象が1つずつ減っていくため、「該当オブジェクトの個数分繰り返す」が成り立たなくなるためです。

 これをなんとかするには「対照オブジェクトの個数を取得して、0になるまで繰り返す」のように逆順で処理します(デクリメント)。

 3行目のvar i=gucount-1;で配列の数を定義します。オブジェクト数から-1しているのはJavaScriptでは配列が0から始まるためで、個数をそのままiに代入すると存在しないものを参照してしまいエラーになります。

 続いて、i>-1で「iが-1より大きくなるまで(つまり0になるまで)」、i--で繰り返します。

 例えば、ガイドがドキュメントに10本引かれている場合だと、guObj.lengthは10、ガイドの配列は[0]~[9]、ガイド[9]から削除していき、ガイド[0]を削除するまで繰り返す、という順番での処理になります。

(ググったらJavaScriptでは結構初歩的なことだったというこの…)

               

広告

コメントする

★マークのある項目が必須項目です。メールアドレスは公開されません。

CAPTCHA


内容を確認して、送信してください(プレビューはされません)。コメント内では<strong>、<code>、<em>のタグが使えます。

こちらもいかが

新しい投稿

2017年まとめ

過去の投稿

【InDesign】スクリプトで制御する場合の「文字前のアキ量」「文字後のアキ量」
【InDesign】スクリプトで制御する場合の「文字前のアキ量」「文字後のアキ量」