< マスタースプレッド > 

 

ドキュメントにあるすべてのマスタースプレッドは、ドキュメントのmasterSpreadsオブジェクトから配列として取得します。

スプレッドの名前はmasterSpreadオブジェクトのnameプロパティから取得できます。

ただし、これはプレフィックスを含めた名称で、それぞれを個別に分けて取得したい場合は、namePrefixプロパティとbaseNameプロパテから取得します。

var mSpreads= app.activeDocument.masterSpreads;
var masterNum= mSpreads.length; //マスタースプレッドの総数
$.writeln (masterNum);
for (var i=0; i<masterNum; i++) {
    $.writeln ("name "+mSpreads[i].name); //マスタースプレッドの名前
    $.writeln ("pfx "+mSpreads[i].namePrefix); //プレフィックスの名前
    $.writeln ("baseName"+mSpreads[i].baseName); //プレフィックスを除いた名前
}

 

スプレッドを特定するには、配列の順序、または前述の方法で取得した名前をitemByName関数で取得する方法がありますが、スプレッド名はユーザーによって書き換えられる可能性があり、順序も変更される(配列の順番が変わる)可能性があります。

こういったユーザーの動きに対処するために、マスタースプレッドは固有IDで取得・管理したほうが安全です。

var msID= app.activeDocument.masterSpreads[0].id;
//名称が変更されたり順番が変更されても、以下のようにしてオブジェクトを特定し取得できる
var obj= app.activeDocument.masterSpreads.itemByID(msID)

 

 

< スプレッド >

 

ドキュメントにあるすべてのスプレッドは、ドキュメントのspreadsオブジェクトから配列として取得できます。スプレッドには名前がないので、必然的に固有IDで管理することになります。

var spObj= app.activeDocument.spreads;
var spNum= spObj.length; //スプレッドの総数
$.writeln (spNum);
for (var i=0; i<spNum; i++) {
    $.writeln ("ID "+spObj[i].id); //スプレッドのユニークID
}

 

また、アクティブスプレッド(現在のスプレッド)はlayoutWindowオブジェクトのactiveSpreadプロパティから取得します。

以下の例では、最前面のlayoutWindow(activeWindow)経由で取得していますので、複数のドキュメントを開いていても結果的に最前面のドキュメントから取得することになります。

var spObj= app.activeWindow.activeSpread;

 

上記のように取得したアクティブスプレッドは、マスタースプレッドの場合と普通のスプレッドの場合があります。それを判別するにはconstructorオブジェクトのnameプロパティを取得します。

マスタースプレッドであれば「MasterSpread」、普通のスプレッドであれば「Spread」という文字列が返ります。

var spObj= app.activeWindow.activeSpread;
$.writeln (spObj.constructor.name);

 

 

< ページ >

 

ドキュメントにあるすべてのページは、ドキュメントのpagesオブジェクトから配列として取得します。なお、nameプロパティで得られるのは、自動ノンブルで表示される文字列と同じものです。

var pgObj= app.activeDocument.pages;
var pgNum= pgObj.length; //ページの総数
$.writeln (pgNum);
for (var i=0; i<pgNum; i++) {
	$.writeln ("name "+pgObj[i].name); //ページの名前
	$.writeln ("ID "+pgObj[i].id); //ページのユニークID
}

 

特定のスプレッド/マスタースプレッドにあるページを取得したい場合は、spreadオブジェクト経由で取得します。

var spObj= app.activeWindow.activeSpread; //アクティブスプレッド
var pgObj= spObj.pages;
var pgNum= pgObj.length; //ページ数
$.writeln (pgNum);
for (var i=0; i<pgNum; i++) {
	$.writeln ("name "+pgObj[i].name); //ページの名前
	$.writeln ("ID "+pgObj[i].id); //ページのユニークID
}

 

アクティブページ(現在のページ)は、スプレッドと同じようにlayoutWindowオブジェクトのactivePageプロパティから取得します。

var pgObj= app.activeWindow.activePage;

 

また、ページが存在するスプレッドを取得したい場合は、parentプロパティを取得します。

var ptSpread= app.activeWindow.activePage.parent;

 

 

Joomla templates by a4joomla