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

デザイナー上がりですがいまはDTP命。InDesign用スクリプトの解説などを綴っています。コメント、読者登録歓迎

続・ページ上のオブジェクト指定

■allPageItemsで、マスターページを除外する書き方の例

[例1]ドキュメントページを指定(例は1ページ)して処理する場合

var myDoc = app.activeDocument; 
for (var i=0; i<myDoc.pages[0].allPageItems.length; i++) {
        /////ここに処理を書く(例:塗りを黒に)/////
        myDoc.pages[0].allPageItems[i].fillColor = "Black";
     }

[例2]マスターページAを除外する場合

var myDoc = app.activeDocument; 
for (var i=0; i<myDoc.allPageItems.length; i++) {
    if (myDoc.allPageItems[i].parentPage.name != "A")
        /////ここに処理を書く(例:塗りを黒に)/////
        myDoc.allPageItems[i].fillColor = "Black";
    }

■さまざまなオブジェクトが存在するときに、特定のフレームだけ対象にする場合の書き方

[例3]画像フレーム、テキストフレーム、グループオブジェクトが存在するページで、「test.eps」が配置されたフレームを青枠で囲む

sample()//関数「sample」の呼び出し

//ここから関数「sample」
function sample() {
var myDoc = app.activeDocument; 
var obj = myDoc.pages[0].allPageItems; 

for (var i=0; i<myDoc.allPageItems.length; i++) { 
try {//allPageItemsだとくり返し数があまるので、エラー処理をしておく
    if (obj[i].constructor.name == "TextFrame"){
        if (obj[i].contentType == ContentType.graphicType) {
            if (obj[i].allGraphics[0].itemLink.name == "test.eps"){
                obj[i].strokeColor = "C=100 M=0 Y=0 K=0";
                obj[i].strokeweight = "1mm"
                }
            }
        }
    } catch(e) {break} //エラーが発生したらループを抜ける
}}

ページアイテムの中からテキストフレームを選び、さらにテキストフレームの中から属性が画像のものを選んでいます。