現在開かれているすべてのドキュメントはdocumentsオブジェクトを配列として取得します。このとき、配列の先頭は最前面で開かれているドキュメントになっています。

var docObj= app.documents;
var docNum= docObj.length; //ドキュメントの総数
$.writeln (docNum);
//開かれているドキュメントが0でなければ...
if ( docNum > 0 ) {
    $.writeln (docObj[0].name); //配列の先頭=最前面のドキュメント名
}

 

最前面で開かれているドキュメントは、activeDocumentプロパティから取得することができます。

var docObj= app.activeDocument;

 

ドキュメント名が分かっていればitemByName関数で取得することができます。

var docObj= app.documents.itemByName('foo.indd');

 

しかし、同じドキュメント名が複数存在するなど、名前で検索することが困難な場合もあります。また、間をおいて同じドキュメントを操作したいとき、最初に操作した「foo.indd」と現在開かれている「foo.indd」が同じドキュメントかどうか定かではありません。ユーザーが新たに開いた「同名の別なドキュメント」である可能性があるからです。

こういった場合、CS5以降であればセッション毎(≒起動毎)にドキュメントへ割り振られる固有IDで検索することで対処できます。

//IDでドキュメントを把握する
var dicID= app.activeDocument.id; //ドキュメントをIDで把握
/* ...コールバックされるなど、ユーザーに時間を与えた後でも... */
var docObj= app.documents.itemByID(dicID); //IDでドキュメントが特定できる
$.writeln (docObj.name);

 

InDesignの起動毎、開かれたドキュメントには固有のIDが割り振られます。また、ドキュメントが閉じられればそのIDは欠番となり、新たに開かれたドキュメントに対しては、常に新しいIDが割り当てられます。欠番になったIDが再び割り振られることはありません。つまり、このIDは同一セッション内であれば、唯一無二が保証されることになります。

逆に同じドキュメントであっても、一度閉じられて再び開かれた場合は、その新たな固有IDが割り振られますので、IDによって同一ドキュメントなのかを識別することはできません。

 

 

Joomla templates by a4joomla