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