オーバーセットテキストを探そう 2

オフトピックが連続するけど、こちらも結構有用だと思うので先に書いてしまうね。
前回のエントリではテキストフレームに対する処理だったのだけど、今回はセルに対する処理をやってみようと思うんだ。特にセルが対象の場合だと追込み方はほほ長体のみで完結してしまうのではないかいな、と思うのでこちらの方が実務には役立つかもしれないね。
基本はテキストフレームの時と同じで、手順もそのままで大丈夫。何が違うかと言うと処理対象だけだとwww

今回はテキストフレーム中に表が一つだけ存在するケースを想定してコードを書いてみるんだ。表が含まれるテキストフレームを選択した状態でスクリプトを走らせるんだよ。

まずはこの2行から

slct = app.activeDocument.selection[0];
cellNum = slct.tables[0].cells.length;

slctの中身はtextFramesが入ることになるね。次の行はテキストフレームに含まれるテーブルのセル数を取得しているんだ。前回のテキストフレームの数を調べるのと同様の処理だね。これがループの回数になるわけだね。

for (i=0;i<cellNum;i++){
    flow = slct.tables[0].cells[i].overflows;
    scale = 100;
    if (flow){
        txObj = slct.tables[0].cells[i].characters.everyItem();
        while (flow){
            scale–;
            txObj.horizontalScale = scale;
            flow=slct.tables[0].cells[i].overflows;
            }
        }
    }

ループの方をみてみよう。前回とほぼ同様なのは分かってもらえると思うんだ。違うのは処理対象

    flow = slct.tables[0].cells[i].overflows;

slctはtextFramesなので、「選択したテキストフレームの最初のテーブルのセルのオーバーフロープロパティ」を順番に参照するかたちになるね。
その他は変わらないので解説は割愛するよ。前回のエントリを参照してね。
それから、テキストフレーム内にtableが複数あるケースでは、予めtableの数を調べてループを作って、その中で今回のコードを走らせる形にすれば良いんだ。需要のある人は考えてみてね。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中