2016-08-12 5 views
1

オブジェクト(またはレイヤー)がドキュメントに存在するかどうかを確認しようとしました。 このスクリプトは、名前がxのpageItemがある場合に機能します。しかし、そうでない場合は失敗します。 (これまでのところ良い)シュレーディンガーのオブジェクト?

"x"という名前のこのオブジェクトが存在しない場合でも、Aはオブジェクトを返します。私がその名前、ID、または何かを求めているなら、スクリプトはエラーのために停止します。

//Schroedinger's object 
A=app.activeDocument.pageItems.itemByName("x") 
$.writeln(A) //returns: [object PageItem] 
$.writeln(A.id) //Error. doesn't exist 

したがって、空の新しいドキュメントをInDesignで試してみて、スクリプトを実行してください。私はこの現象を理解していません。

少なくとも、あなたはそれがあなたのアプローチが正しいA.isValid(それは私が最善のために期待して、今使っているものです)

+1

[このブログの記事](http://www.indiscripts.com/post/2010/06/on-everyitem-part-1)は役立つことを物語っています。 –

答えて

3

とexistanceだ確認することができます。

.itemByName()は常にPageItemオブジェクトを返します(引数として文字列を渡した場合)。しかし、返されたオブジェクトは、対応するアイテムがドキュメントに存在する場合にのみ有効です。返されたオブジェクトが有効かどうかを確認するには、.isValidプロパティを使用する必要があります。

関連する問題