読者です 読者をやめる 読者になる 読者になる

とあるDTPオペレーターのInDesignスクリプト備忘録

DTPオペレーターのInDesign用スクリプトのメモ。

[InDesignスクリプト]特定のレイヤー上のオブジェクトのみ処理対象にしたいの巻

一年前にスクリプトの勉強を始めた頃に、いきなりつまづいた部分を書いてみる。
for使ったりif使ったりしてみるもうまく行かず……答えは至ってシンプルだった。
itemByNameでレイヤーさえ指定してしまえばこっちのもん。
同じ場所でつまづくかもしれない、未来の初心者のために。

var myDoc = app.activeDocument; //アクティブなドキュメントが対象

////////////処理したいレイヤー名を代入。以降変数名でレイヤー指定ができて楽。
var targetLay = myDoc.layers.itemByName ("レイヤー 2"); 

for (var i=0; i<targetLay.pageItems.length; i++) {
     //ここにこんな風に処理を書けば指定したレイヤー上のオブジェクトのみ対象になる。
        targetLay.pageItems[i].select (SelectionOptions.addTo)//選択でもしてみる
    }


ループの条件を全ページアイテムにして、あまった分はtry catchで適当にすっとばすという横着な書き方も。

var myDoc = app.activeDocument; //アクティブなドキュメントが対象
var myFrame = myDoc.pageItems; //テキストフレームも画像フレームもただの四角も 


////////////処理したいレイヤー名を代入。以降変数名でレイヤー指定ができて楽。
var targetLay = myDoc.layers.itemByName ("レイヤー 2"); 

for (var i=0; i<myFrame.length; i++) {
    try {
     //ここにこんな風に処理を書けば指定したレイヤー上のオブジェクトのみ対象になる。
        targetLay.pageItems[i].select (SelectionOptions.addTo)//選択でもしてみる
        } catch (e) {}
    }