3

InDesign で (非常に大きな) スクリプトを実行しています。このスクリプトは、ある時点でライブラリ アセットをページに配置し、それを特定のレイヤーに移動します。このスクリプトは、ここにあるすべてのコンピューターで正常に実行されますが、その時点で InDesign で開いているドキュメントが他にない場合に限られます。

別のドキュメント開いている場合、スクリプトが配置されたアセットを別のレイヤーに移動しようとすると、エラーが表示されます。

JavaScript エラー!

エラー番号: 54 エラー文字列: キャッチされていない JavaScript 例外: 行番号 2651 のエラー セット プロパティ 'itemLayer' の無効な値。レイヤーを予期していましたが、レイヤーを受け取りました。

太字の部分に注目してください。期待していたものを受け取ったので、かんしゃくを投げますか?これは私には意味がありません。記録のために、参照しているコード行を次に示します。

curAsset[0].itemLayer = document.layers.item("Art Work (max imprint)");

そして、記録のために、ライブラリから取得され、ドキュメントに既に配置されてcurAsset[0] いるアセット オブジェクトです。Anddocumentは、現在開いているドキュメントに既に割り当てられている変数です。

私の作業理論は、InDesign で開いている他のドキュメントがこのエラーを引き起こしているというものです。これは、これまでに作成できた唯一の相関関係ですが、方法がわかりません。スクリプトには、document開いているドキュメントの 1 つだけを参照する変数 が既に含まれています。そして、この 1 行を除いて (これまでのところ)、スクリプト内の他のすべてが正常に実行されます。

4

2 に答える 2

0

TLDR; 「ドキュメント」オブジェクトが、オブジェクトの「curAsset」配列を構築するために使用されるオブジェクトと同じであることを確認してください。

それ以来、解決策を見つけていただければ幸いですが、まだ解決策を見つけていない場合は、解決策を見つける手がかりが得られるかもしれません。私はこのタイプのエラー「X を予期していましたが、X を受け取りました」を自分で処理しました。

残りのコードを見ないとわかりにくいですが、「ドキュメント」オブジェクトへの参照が、「curAsset」オブジェクトが参照するドキュメントと同じドキュメントを参照していないのではないかと思います。

私の場合、これが発生したとき、段落をドキュメントから別のドキュメントにコピーしてから段落スタイルを割り当てようとしましたが、段落に適用しようとしたときに、最初のドキュメントからの段落スタイルの参照を誤って使用していました2 番目のドキュメントで。どちらのドキュメントも同じテンプレートと段落スタイルを持っていましたが、段落スタイル オブジェクトへの参照はドキュメントに固有です。

于 2014-10-14T12:32:12.847 に答える
0

これは非常に面白い/腹立たしいエラー メッセージです。いつでも試すことができますgetElements()。魔法のように機能することもあります。

curAsset[0].itemLayer = document.layers.item("Art Work (max imprint)").getElements()[0];

考えるべきもう1つのこと。InDesign の Extendscript は、特定のタイプのオブジェクトと、そのタイプのオブジェクトの配列を区別しない場合があります。そのため、クエリが 1 つのアイテムのみを返すことを確認したい場合があります。

于 2013-11-28T05:41:09.983 に答える