Indesignのテキストフレームの内容をテキストに流し込む

[5685]Indesignのテキストフレームの内容をテキストに流し込む | 投稿者:taka | 投稿日:2011/03/23(Wed) 14:45:10
どうも、お久しぶりです。
OS:Windows7 , アプリ:InDesignCS3 , 言語:JavaScriptを使用しているのですが、
Indesignで特定のテキストフレームのみの内容をテキストに書き出したいのですが、すべて書き出されてしまいます。

(function(){
    var fileObj = File.saveDialog("保存するファイル名を入力してください","CSV:*.csv");
   if (!fileObj) return; // キャンセルされたら処理しない
   if (!fileObj.open("w")){
       alert(" ファイルに書き込みができません");
       return;
   }
   textObj = app.activeDocument.textFrames;
   for (i=0; i<textObj.length; i++){
       try{
           if (textObj[i].label == "商品名");
           fileObj.write(textObj[i].contents);
           fileObj.write(",");
       }catch(e){}
   }
   fileObj.close();
   alert("ファイルに書き出しました");
})();

というスクリプトで、スクリプトラベルに商品名というものがあれば、それだけをテキストに書き出しというスクリプト予定だったのですが、スクリプトラベルに何も記載されていないものなど、すべてが書き出されてしまいます。
どうか、助けていただけないでしょうか?
» 1
[5686]Re: Indesignのテキストフレームの内容をテキストに流し込む | 投稿者:PICTRIX | 投稿日:2011/03/23(Wed) 15:59:46
全然詳しく無いんですが、ひょっとしてですが。

fileObj.write(textObj[i].textRange.contents);
かも。
» 2
[5687]Re: Indesignのテキストフレームの内容をテキストに流し込む | 投稿者:taka | 投稿日:2011/03/23(Wed) 16:38:19
PICTRIX様

返信ありがとうございます。
結果としてなんですが、その文をいれたんですが、
逆に何も書き出しをしてくれない状態になりました。
» 3
たけうちとおるです。
if文がおかしいですね。下記のようになおしてみて下さい。
デバッグするとわかりやすいですよ。
try{
if (textObj[i].label == "商品名"){
fileObj.write(textObj[i].contents);
fileObj.write(",");
}
}catch(e){}
}
» 4
[5689]Re: Indesignのテキストフレームの内容をテキストに流し込む | 投稿者:PICTRIX | 投稿日:2011/03/23(Wed) 16:57:17
textRange なんて無かったですね失礼っ!
(有るとすれば text でしたか?)
» 5
[5690]Re: Indesignのテキストフレームの内容をテキストに流し込む | 投稿者:taka | 投稿日:2011/03/23(Wed) 17:18:42
たけうちとおる様

...なんというかお恥ずかしい。
if文の箇所が{文 ではなく、;で終わらせてしまうという、初歩的なミスを全く気付いてなかったとは、おかげで書き出しに成功しました。

PICTRIX様

一緒に考えていただいて本当にありがとうございました。
なんとか、書き出すことができました。
» 6
takaさんどうも
前にもお聞きしようと思ったんですが、スクリプトを書くのにExtendScriptToolKitは使われていませんか?
アプリケーション上のエラー以前の書式間違いなど、実行前にちゃんと叱ってくれるので便利ですよ。
» 7
[5692]Re: Indesignのテキストフレームの内容をテキストに流し込む | 投稿者:taka | 投稿日:2011/03/24(Thu) 15:57:38
(z-)様、お久しぶりです。
スクリプトを書くときは、ExtendScriptToolKit 2を使っておりますが、特にエラーもなく、実行されてしまいました。
何か、設定が必要でしたら、教えてもらえると助かります。
» 8
このスクリプトは動きました。
ご存知かもしれませんがExtendScriptToolKit 2の左側の行番号を
クリックすると赤●ができるので、そこからステップ実行してやれば
if 文がスルーされ効いていない事がわかります。
データブラウザでtextObj[i].labelの値をチェックしたり
alert(textObj[i].label)などでチェックすると値は期待通りなのに
スルーされているので、構文がおかしい事に気がつきます。

http://www.adg7.com/takenote_b/2009/06/extendscript-toolkit2.html
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア