スクリプトラベルによるテキストフレーム取得

[4943]スクリプトラベルによるテキストフレーム取得 | 投稿者:jizo | 投稿日:2010/07/23(Fri) 22:36:29
お世話になっております。CS5&JavaScriptを使用しています。
基本的な内容で恐縮ですが、CS4で実現できていたことがCS5で上手くいかず質問です。


1.InDesign上で、複数のテキストフレームのうちの一つに"textFrame"というスクリプトラベルを付与する。
2.以下のコードでラベルの付いたテキストフレームを参照しようとすると、オブジェクトが見つからない。
  (オブジェクトがnullとなる)

app.documents.firstItem().textFrames.itemByName("textFrame")

ちなみにインデックスで参照すればオブジェクトは見つかりますしラベルも取得できます。

app.documents.firstItem().textFrames.item(3).label
→"textFrame"が返る。


冒頭の通り、CS4ではこのロジックで問題ありませんでした。スクリプトラベルの参照方法に関して、CS5で何か根本的な変更があったのでしょうか?
» 1
InDesign CS5からPageItems.itemByName(str)のstrはレイヤーパネルのオブジェクト名を指すようになりました。PageItems.item(str)も同様です。
つまり、ラベルから直アクセスが難しくなったようです。
#う?ん。

くわしくは
「With CS5, some things have changed」
*http://forums.adobe.com/thread/615381
を参照してください。
# scriptVersionを一時的に書き換えて書き換えてしまう方法などが紹介されています。
» 2
[4948]Re: スクリプトラベルによるテキストフレーム取得 | 投稿者:jizo | 投稿日:2010/07/26(Mon) 10:37:07
せうぞーさん

お礼が遅くなりました。いつも情報をありがとうございます。

> InDesign CS5からPageItems.itemByName(str)のstrはレイヤーパネルのオブジェクト名を指すようになりました。
> PageItems.item(str)も同様です。
> つまり、ラベルから直アクセスが難しくなったようです。

おっと。重要な情報を見落としていたようですね。とりあえず理由がわかって助かりました。
» 3
ちょっとだけ調べてみた感じだと

if (myObjects[h].label != "mohu")

みたいなラベル参照はできるみたいです。
case文などで分岐処理してあげるのがいいのかなーなんて思っています。
» 4
関連したブログ記事を書きました。参考にしてください。
*http://omachi.blog.ocn.ne.jp/preopen/2010/07/indesign_cs55pa.html
» 5
[4956]Re: スクリプトラベルによるテキストフレーム取得 | 投稿者:jizo | 投稿日:2010/07/26(Mon) 18:20:05
こうちゃんさん、お~まちさん
情報をありがとうございます。

> if (myObjects[h].label != "mohu")
> みたいなラベル参照はできるみたいです。

そのようですね。お~まちさんから紹介して頂いたリンクにもまとめられている通り、
ループの中でラベルが一致したものを捕まえて処理する方法に修正して回避しています。

皆さんのフォローに助けて頂いております。ありがとうございます。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)