Skip to main content
Participant
September 17, 2019
質問

ページ内の複数のテキストボックスを連結することなく、テキストを書き出したい

  • September 17, 2019
  • 返信数 2.
  • 989 ビュー

windows10 インデザインcc2017です(作成はmacOS10.8.5 インデザインcs6)。

1ページあたり60個のテキストボックスがある、70ページのインデザインのデータを、1ページあたり1つのエクセル(70p=70個のエクセルファイル)データにしたいと考えています。

テキストボックスの層(前面・背面など)がページごとに統一されていないデータを、全ページ、左上から右下のような順番、もしくは一定に統一された順番でテキストを書き出しすることはできますか?

また、そういったスクリプトはありますか?

1テキストボックスごとに改行されているのが理想です。

最終的には、エクセルで作成されたフォーマットに流し込みをしたいです。

マクロやスクリプトなど、あまり詳しくないので、わかりやすい方法があれば、教えてください。

    このトピックへの返信は締め切られました。

    返信数 2

    Ten A
    Community Expert
    Community Expert
    September 17, 2019

    スクリプトでやるなら、ページごとにループしながらtextFramesをソートして左上から並べ直し、contentsを抜き出して保存するという一連を繰り返す形になります。

    そうそう都合の良いScriptというのは世の中出回っていません。基本的な機能ですから近い内容のものを自身で少し手を加えるというのが現実的でしょう。

    先にも書きましたが、基本的な機能で賄えるのでスクリプトを学ぶには適したテーマだと思います。

    yusuke.s
    Inspiring
    September 17, 2019

    yubenshaさん、こんにちは。

     

    パターン1

    1. 検索 .\z  置換 $0★  などですべてのストーリーの最後に同じ記号を挟む
    2. 手作業ですべてのストーリーを任意の順に連結する
    3. テキストとして書き出す
    4. 1で挿入した記号を改行やタブに置換する

    スクリプトなどを使わなければこんな感じかなと思いました。

     

    パターン2

    テキストフレームをすべて結合(https://ajarproductions.com/blog/2008/11/28/merge-textframes-extension-for-adobe-indesign/) してからテキストを抜き出す。

    ただこれは調べたら見つかったというものなので僕自身試していません。

     

    パターン3

    やはりスクリプトを用意するのが楽かもしません。

    単純にすべてのテキストフレームを連結するにはこんな感じです。

    var doc = app.documents[0];
    var txf = doc.textFrames;
    for (var i=0; i<txf.length-1; i++) {
        txf[i].nextTextFrame = txf[i+1];
    }

    座標もペーストボードも判定せず、すべてのテキストフレームを適当に連結します。

    パターン1の処理1を行った上でテキストフレームを連結し、

    テキストに書き出してからその記号を改行なりタブに置換するというのが手っ取り早いように思います。

    作り込むなら、最後に書き出したいテキストの形式から逆算して、スクリプトに仕込んでおくといいでしょう。

    Yusuke S.
    yusuke.s
    Inspiring
    September 17, 2019

    すみません、連結しないで、と書いてありましたね……

    Yusuke S.