テキストの流し込みについて

[4322]テキストの流し込みについて | 投稿者:fxftp | 投稿日:2010/03/03(Wed) 10:13:21
IndesignCS4 Windows7の環境で使用しています。

複数ページに、複数のテキストフレームを作成したとします。
そのテキストフレームへ、複数行のテキストデータから1行ずつ流し込む方法はありませんか?写真のキャプションのようなものを想像していただければと思います。ただし写真はありません。
よろしくお願いいたします
» 1
[4323]Re: テキストの流し込みについて | 投稿者:いき | 投稿日:2010/03/03(Wed) 11:13:16
私からは二種類の提案をしておきます。
ひとつめはデータ結合を使うこと。

ふたつめはスクリプトです。
1.まず、流し込みたい順番に、フレームにスクリプトラベルを付ける。(ページごとに1などから始めれば良いでしょう)
2.ファイルから1行ずつ読み込み、ページ順、スクリプトラベルの若い順にフレームに読み込む。

これで多分いけるかと。
» 2
[4324]Re: テキストの流し込みについて | 投稿者:お~まち | 投稿日:2010/03/03(Wed) 12:23:27
単に複数ファイルをドラッグ&ドロップではだめなの?
» 3
[4325]Re: テキストの流し込みについて | 投稿者:(z-) | 投稿日:2010/03/03(Wed) 12:45:24
テキスト原稿は基本1ファイル、その中の文章を1段落ごとに、あらかじめ散らばっているテキストフレームにぽんぽんペースト、ということであれば

↓いわゆるバラ打ちをまとめてやっつける為のスクリプト、というのをそういう時の為に書いてみたのですが、
http://pub.ne.jp/ajabon/?entry_id=2552403
現状、MacOSのCS3、CS4でしか動作しません。
テキストファイル選択時に一部分だけAppleScriptが入っているのが原因なので、
http://www14.plala.or.jp/ajabon/killtime/PlaceOptionalText_1.2.zip
をダウンロードしてもらってから、57行目あたりの

function filefunc (aa){ //テキストファイルを選択して読み込む
   var my_AppleScript = 'POSIX path of (choose file with prompt ("テキストファイルを選択")) as unicode text';
   var newpath = app.doScript (my_AppleScript, ScriptLanguage.APPLESCRIPT_LANGUAGE);
   var my_fileObj = new File (newpath);



var my_fileObj = new File.openDialog("テキストファイルを選択");

に書き換えてしまえば、あるいは使えるかも知れません。
当方確認できません。ものすごく便利なのですが反響がないのでバグ修正版もFTPには上がっていませんが、基本的な使用には問題ないです。
よかったら試してみてください
» 4
[4326]Re: テキストの流し込みについて | 投稿者:fxftp | 投稿日:2010/03/03(Wed) 13:21:45
ご回答ありがとうございます。

いき様の2.ファイルから1行ずつ読み込み、ページ順、スクリプトラベルの若い順にフレームに読み込む。のスクリプト知りたいです。実は、スクリプト組んだことありません。

お~まち様。実はテキストフレームが300程度あります。テキストファイルはひとつです。テキストファイルを300個に分割することも考え、フリーソフトを探しましたが、途中で断念しました。

(Z-)様。これから試してみます。結果は後ほど報告いたします。
» 5
[4333]Re: テキストの流し込みについて | 投稿者:いき | 投稿日:2010/03/04(Thu) 09:25:21
(z-)さんのが使えたらいいなあ。
いちいちスクリプトラベルつけなくていいし。
でも、残念ながらWindowsでは該当の箇所を書き直してもうまく動かないようです。
......少なくとも私の環境(Windows XP/InDesign CS3)ではダメでした。

えーと、エラー処理してないし、他の環境ではテストしてないのでアレですが、、、一応。
300もあるので大変ですが、あらかじめスクリプトラベルをつけてから実行してください。つけていいのは半角算用数字だけです。
本当はLiさんのスクリプトのように、ページごとに1から始められれば少しは手間が減るのですが、私のはページをまたごうがどうしようが加算していってくださいね(^^;

※因みに、CS3までならLiさんのVBが便利です。
 http://www2s.biglobe.ne.jp/~jxli/script/
 「テキスト配置」←タグテキストにも対応しています。

var myDoc = app.activeDocument;
var myPage = app.activeDocument.pages;

var fileObj = File.openDialog ("テキストファイルを指定してください");
if (fileObj) {
   var flag = fileObj.open ("r");
   lineCount = 1;
   if (flag == true) {
       while (!fileObj.eof) {
           for (i=0; i<myPage.length; i++) {
               for (j=0; j<myPage[i].textFrames.length; j++) {
                   if (myPage[i].textFrames[j].label == lineCount.toString()) {
                       myPage[i].textFrames[j].contents = fileObj.readln();
                       lineCount = lineCount + 1;
                   }
               }
           }
       }
   }
}
» 6
[4335]Re: テキストの流し込みについて | 投稿者:いき | 投稿日:2010/03/04(Thu) 11:08:04
エラー処理追加してみました。
よければどうぞ。
http://d.hatena.ne.jp/k_iki/20100304/1267668043
» 7
[4337]Re: テキストの流し込みについて | 投稿者:(z-) | 投稿日:2010/03/04(Thu) 12:56:37
>いき親分 テストありがとうございます。上記の変更だけでWindows対応できないとなるとJavaScriptで書いた意義が半減ですねえ..(とか言ってますが他の言語は扱えません orz)残念。

1こ1こスクリプトラベルを付ける手間を思えば、
http://pub.ne.jp/ajabon/?entry_id=2460599
のページの下半分で公開している「PlaceOptionalText_β.jsx」でもいいかもです。
元テキストに呼び出し用の合番が必要ですが2?3行のスクリプトで簡単に付けられます。
» 8
[4338]Re: テキストの流し込みについて | 投稿者:いき | 投稿日:2010/03/04(Thu) 14:49:25
うあー、すみません。
私のJSの書き方だと、テキストファイルの行数よりもInDesign上のテキストフレームが多ければ一応動きます。
が、テキストファイルの行番号と一致するラベルを持つフレームが揃っていないと、InDesignがビジー状態になって処理が終わりません。
確実にスクリプトラベルをつければ良いのですが、エラー処理の入れ方自体を書き直さないと危険ですね(^^;

> (z-)さん
時間がなくて今日はこれ以上検証できませんが......。
当社のMAC(CS3/CS4)で試してもうまく動かないようです。
なにかするべきことを見落としているのでしょうか、私。。。
» 9
[4339]Re: テキストの流し込みについて | 投稿者:(z-) | 投稿日:2010/03/04(Thu) 15:51:13
>2?3行のスクリプトで簡単に
の件、いざ書いてみたらもうちょっと膨れました(土下座)

var doc=app.activeDocument;
var txtObj=doc.textFrames[0].parentStory;
var repTxtObj=txtObj.contents.replace(/([^]?)[]+([^]?)/g,"$1$2");
repTxtObj=repTxtObj.replace(/^+/,"");
repTxtObj=repTxtObj.replace(/+$/,"");
var txtAry=repTxtObj.split("");
for(i=0; i<txtAry.length; i++){
txtAry[i]=""+eval(i+1)+""+txtAry[i];
}
txtObj.contents=txtAry.join("");

InDesignの新規ドキュメントにテキスト原稿ファイルを配置し、上記のスクリプトをかけたのち、それは開きっぱなしにして作業用ドキュメントで1つのテキストフレームを選択して「PlaceOptionalText_β.jsx」を実行、合番を聞かれたら原稿テキストの行番号を入力、という流れを提案してみます。

>いき親分
よろしければ後日、改めてテストにご協力頂けますでしょうか。。起動しない、テキストファイルを読み込まない、流し込めない、なんだか臭い、など具体的なダメっぷり、ダメ発覚時の挙動、ソーステキストの形式など頂ければ大いに幸いです。
本人は日々使い倒してるんですがねえ ^; おかしいな
» 10
[4343]Re: テキストの流し込みについて | 投稿者:fxftp | 投稿日:2010/03/05(Fri) 11:30:53
盛り上がっていただいてありがとうございます。

いきさんのスクリプト使わせていただきました。ずいぶん助かりました。当方こんな仕事が多いんで。

(z-)さんのもWindowsで使えると「いいな?」と思います。

Liさんのも試しましたが、CS4ではだめでした。

スクリプトの便利さは、認識していたのですが、使えない(書けない)もどかしさがありました。これからスクリプトにはまってみようと決心したところです。3日坊主にならないといいけど。
» 11
[4344]Re: テキストの流し込みについて | 投稿者:(z-) | 投稿日:2010/03/05(Fri) 12:31:49
>Liさんのも試しましたが、CS4ではだめでした

CS4の、本来スクリプトを入れる場所に「Version 5.0 Scripts」というフォルダを用意して、その中にスクリプトを入れると大半の旧バージョン用の物は動くのですが、これってJavaScriptだけじゃなくVBも同じでしたっけ?


>(z-)さんのもWindowsで使えると「いいな?」と思います

肝心な時に役立たずですみませんでした。。
Windowsは高くて手が出ないんですよ^
» 12
[4345]Re: テキストの流し込みについて | 投稿者:いき | 投稿日:2010/03/05(Fri) 12:49:58
fxftpさん>>
あのような不完全なものが役に立ったようでほっとしています。
利用の際は、くれぐれもラベル付フレームが配置テキストの行数未満にならないように設定してくださいね(^^;

(z-)さん>>
Liさんのスクリプトの件ですが、私はWin版CS4を持ってないので検証できませんが、VBSならあるいは旧バージョンのものでも動くかもしれません。
しかしLiさんが提供しておられるのは全てコンパイル済のものです。おそらく他バージョンでは動かないでしょう。

もう少し時間ができたら、もういちど(z-)さんのとても便利なスクリプトを試させていただきます!
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア