[ 掲示板に戻る ]

記事No.5197に関するスレッドです

画像選択のスクリプトについて / kangaroo
Mac OS 10.6.3/InDesign CS5

JavaScriptを本やこちらのサイトで勉強中です。
画像ボックスを選択したいのですが、
下記スクリプトではCS4では大丈夫だったのですが
CS5だとうまくいきません。

var pageObj = app.activeDocument;
for (var i=0; i<pageObj.allPageItems.length; i++)
{
if (pageObj.allPageItems[i].contentType == ContentType.graphicType)
{
pageObj.allPageItems[i].select(SelectionOptions.addTo);
}
}

4行目で「オブジェクトまたはメソッド 'contentType' をサポートしていません」
とエラーで止まってしまいます。
初歩的な問題かと思いますが、どなたかご教授願えると助かります。

よろしくお願いします。

No.5196 2010/10/22(Fri) 11:37:46
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9

Re: 画像選択のスクリプトについて / いき URL
ソースを一切改変せずに試しました。
問題なさそうですが。

WindowsXP sp3/InDesign CS5 v7.0.3

No.5197 2010/10/22(Fri) 12:12:21
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 ( .NET CLR 3.5.30729)

Re: 画像選択のスクリプトについて / (z-) Email URL
CS5が手元にないのでチャチャ入れで終わりそうですが(すっこんでろと言われそうですが)
CS5上では根本的にエラーとなる書式なのか、オブジェクトの種類によってエラーとなる場合もあるのか、はともかくとして、

if (pageObj.allPageItems[i].contentType == ContentType.graphicType)

if (typeof pageObj.allPageItems[i].contentType != "undefined") {
if (pageObj.allPageItems[i].contentType == ContentType.graphicType)
としてみてはどうでしょう。閉じカッコも末尾に1つ追加で。

No.5198 2010/10/22(Fri) 12:19:50
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.1.2 Safari/533.18.5

Re: 画像選択のスクリプトについて / kamiseto URL
if文のところを
if(pageObj.allPageItems[i] instanceof "Graphic"){...}
もしくは
if(pageObj.allPageItems[i].constructor.name === "Graphic"){...}
とかで試してみて下さい。
目的のオブジェクト名が"Graphic"でいいのかわかりませんが。
目的のオブジェクトの型が知りたければ、
$.writeln(pageObj.allPageItems[i].constructor.name);
もしくは
alert(pageObj.allPageItems[i].constructor.name);
としてみて下さい。

No.5200 2010/10/22(Fri) 12:41:10
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; ja-JP; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7 GTB7.1

Re: 画像選択のスクリプトについて / こに
ドキュメント上に画像(EPSやPDFなど)を配置してスクリプトを実行してませんか?
その時は、CS5ではエラーになります。
kamisetoさんの書き込みのように
$.writeln(pageObj.allPageItems[i].constructor.name);
でオブジェクト名を表示させると、
CS4ではRectangleでも、CS5ではEPSとかPDFになります。
そこの部分に分岐処理をいれるといいでしょう。

No.5203 2010/10/22(Fri) 13:36:21
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; ja-jp) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5

Re: 画像選択のスクリプトについて / kangaroo
みなさま、返信ありがとうございます。

>いきさん
すみません、こにさんがおっしゃっているように画像を配置して実行していました。
何も配置していないときは問題なく選択できました。
CS4ではどちらでも選択できたので、あまり深く考えていませんでした。
質問があいまいになってしまい、すみません。

>(z-)さん
ありがとうございます。
ご呈示していただいたスクリプトでうまく選択することが出来ました。
が、勉強不足でどうしてうまくいったのか良くわかっていないので
あとで自分なりに解読してみようと思います。

>kamisetoさん
ありがとうございます。
オブジェクト名がEPSの場合は、"Graphic"が"EPS"ですか?
また、{...}の部分には何か文字が入るのでしょうか?

>こにさん
おっしゃっている通り、画像を配置してスクリプトを実行していました。
分岐処理…、がんばって試してみます。

みなさんにご回答頂いたにも関わらず、力不足で理解が足りないようです。
頂いたヒント?をもとに頑張ってみます。

No.5206 2010/10/22(Fri) 15:12:21
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9

Re: 画像選択のスクリプトについて / いき URL
自分が使うとしたら、テキストフレームを選択セットに含めないようにしたスクリプトかな、と思ってちょっと書いてみました。

/////// selectGlaphicFrame.jsx
/////// ここから

var pageObj = app.activeDocument;
app.menuActions.item('$ID/Selection Tool').invoke();
app.select (NothingEnum.nothing);

for (var i=0; i<pageObj.allPageItems.length; i++)
{
if (pageObj.allPageItems[i].constructor.name === "Rectangle")
{
add2sel();
}
else if (pageObj.allPageItems[i].constructor.name === "Polygon")
{
add2sel();
}
else if (pageObj.allPageItems[i].constructor.name === "Oval")
{
add2sel();
}
}

function add2sel(){
pageObj.allPageItems[i].select(SelectionOptions.addTo);
}

/////// ここまで

No.5211 2010/10/22(Fri) 16:07:33
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 ( .NET CLR 3.5.30729)

Re: 画像選択のスクリプトについて / (z-) Email URL
>kangarooさん
今さら質問なんですが、選択するのは
・現在画像が配置されているフレーム
・空のグラフィックフレーム
・どっちも
どれにあたりますか?
それによって最適な分岐処理を絞り込むことができます。
こにさんに示して頂いた情報を元にすると、ウチの提示した例では「現在画像が配置されているフレーム」をスルーしてしまいませんか?

No.5212 2010/10/22(Fri) 16:09:46
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.1.2 Safari/533.18.5

Re: 画像選択のスクリプトについて / いき URL
私のは画像フレームに画像が配置されていても空っぽでも選択に加えます。
で、このままだと複数のスプレッドが存在するドキュメントではエラーになる点を (z-) さんにご指摘いただきましたので、スクリプトの一行目を

var pageObj = app.activeWindow.activeSpread;

に変更したいと思います。
スプレッドをまたいで選択することはできないので、アクティブなスプレッドごとに処理、ということで(^^;

No.5213 2010/10/22(Fri) 17:10:33
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 ( .NET CLR 3.5.30729)

Re: 画像選択のスクリプトについて / kangaroo
(z-)さん、いきさん、ありがとうございます。
全然ついていけてないのですが…。

>(z-)さん
私が考えていたのは
・現在画像が配置されているフレーム
でした。

が、いきさんがどちらでも使えるものを書いて頂いたようで…。
恐縮です。
のちほど試させて頂きたいと思います。

No.5214 2010/10/22(Fri) 17:21:59
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9

Re: 画像選択のスクリプトについて / (z-) Email URL
されば

app.activeDocument.selection=null; //選択範囲のクリア
var pageObj=app.activeDocument.layoutWindows[0].activeSpread;
for(i=0; i<pageObj.allGraphics.length; i++) ///allPageItemsをallGraphicsに変更
{
try
{
pageObj.allGraphics[i].parent.select(SelectionOptions.addTo);
}
catch(e)
{
continue;
}
}

try{} を入れたのはインライングラフィック対策。これは同時に選択できないので。

というか、がすがす押し付けてすみません ^;

No.5215 2010/10/22(Fri) 17:31:09
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; ja-jp) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.1.2 Safari/533.18.5

Re: 画像選択のスクリプトについて / kangaroo
>(z-)さん
いえいえ、ありがとうございます。
とても勉強になりますし、嬉しいです(まだほとんど理解してませんが…)
ちょっと今週はこれ以上出来そうもないので、来週また試させて頂きます。

ありがとうございました。

No.5216 2010/10/22(Fri) 19:25:48
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9