0

ドキュメント内のすべての EPS ファイルにタグを適用しようとしています。私のコード:

 #target indesign
var allItems=app.activeDocument.pageItems.everyItem().getElements().slice(0);
for(var i=0;i<allItems.length;i++)
    { 
        var allInnerItems = allItems[i].allPageItems;
        for(var j=0;j<allInnerItems.length;i++)
        {
            (allInnerItems[j].toString() == "[object EPS]") ? 
                allInnerItems[j].parent.autoTag() : alert('false');
        }
    }

コードはすべての EPS を検出し、それらの Rectangle オブジェクトに AutoTag メソッドを適用します。しかし、「オブジェクトまたは親ストーリーは既にタグ付けされているか、タグ付けできません」というエラーが表示されました。また、EPS で長方形のオブジェクトを選択し、ユーザー インターフェイスで「AutoTag」機能をクリックすると、機能します。多分誰かが知っています、私は何をすべきですか?

前もって感謝します!

4

1 に答える 1

0

これはあなたがやろうとしていることに対してうまくいくはずだと思います。

i++内側のループで、に変更するのを忘れましたj++

また、オブジェクトに対してテストするためにオブジェクトの文字列値を取得する必要はありません(つまり.toString() == "[object EPS]"、)。オブジェクトを要求するだけですconstructor

最後に、すでにタグ付けされている要素のエラーがこれ以上必要ない場合は、ステートメントに条件を追加して、を試行する前に、が含まれているifかどうかをテストできます。pageItemassociatedXMLElementautoTag()

var allItems = app.activeDocument.pageItems.everyItem().getElements();
for(var i=0; i<allItems.length; i++)
{ 
   var allInnerItems = allItems[i].allPageItems;
   for(var j=0;j<allInnerItems.length; j++)
   {
      var item = allInnerItems[j];
      if (item.constructor == EPS && !item.parent.associatedXMLElement) {
         item.parent.autoTag()
      } else {
         alert('false');
      }
   }
}
于 2012-11-12T15:05:16.967 に答える