【InDesign】ガイドを削除/削除する際のfor文 | Blue-Scre{7}n.net | よそいちのDTPメモ

トップページ » InDesign » 【InDesign】ガイドを削除/削除する際のfor文

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

公開日:2017年12月6日 

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

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では結構初歩的なことだったというこの…)


タグ:


広告