【InDesign】ガイドを削除/削除する際のfor文 | Blue-Screeeeeeen.net―youichi7imazekiの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では結構初歩的なことだったというこの…)

タグ:


  • 最近の投稿

  • カテゴリー

  • 月別の記事

  • おことわり

     Adobe、InDesign、Illustrator、Photoshop、Acrobatは、Adobe Systems Incorporated(アドビシステムズ社)の米国および他の国における商標または登録商標です。本サイトでは、RおよびTMを省略しております。