未知のオブジェクトを取得し、それがどんな種類のオブジェクトかを知りたい場合は、そのオブジェクトが持っているconstructorプロパティを使います。

 

以下の例は、InDesignのドキュメント上でユーザーによって選択されたオブジェクトのconstructorを取得し、さらにその名前をnameプロパティから取得してコンソールに書き出すものです。

var selObj= app.selection; //選択されたオブジェクト
if (selObj.length !== 0) {
    var cnt; //カウンタ
    //PageItemの数だけ繰り返し、コンソールに書き出す
    for (cnt=0; cnt <selObj.length; cnt++) {
        var selType= selObj[ cnt ].constructor.name; //オブジェクトの種類
        $.writeln (selType);
    }
}

 

単純にオブジェクトの種類を評価するだけなら、nameプロパティを取得せずにconstructor自体を評価します。

var selObj= app.selection[0]; //選択されたオブジェクト(一つだけ)
if (selObj.constructor === TextFrame) {
    alert ('YES');
} else {
    alert ('NO');
}

 

複数の種類に反応させたい場合は、以下のように文字列の比較関数matchを使います。

var selObj= app.selection[0]; //選択されたオブジェクト(一つだけ)
var targetStr = 'Rectangle, Group, Oval, Polygon, TextFrame'; //対象とするオブジェクト名
if ( targetStr.match(selObj.constructor.name) ) {
    alert ('YES');
} else {
    alert ('NO');
}

 

 

Joomla templates by a4joomla