市川せうぞーさんの名もないテクノ手の
せうぞーさんの「セル内のオーバーフローを解消するスクリプト」
http://d.hatena.ne.jp/seuzo/20080923/1222106561
の読み方です。すいません。スクリプト全文掲載させていただきます。
(メールでは許可とったつもり)
せうぞーさんのこのスクリプトは便利な上に10行しかなくてソースも奇麗なのでカスタマイズや説明には最高の題材です。せうぞーさんありがとうございます。
スクリプトは上から順に実行されていきます。なので下記スクリプトも上から読んでいけばいいわけです。varとついているのは変数が最初に出てくるところです。
var sel = app.activeDocument.selection[0]; for (var i = 0; i < sel.cells.length; i++) { var txtObj = sel.cells[i]; var danraku = txtObj.paragraphs[-1]; for (var w=danraku.horizontalScale; w >= 10; w--){ txtObj.recompose();//★ここ if (txtObj.overflows == false) {break} danraku.horizontalScale = w; } }
var sel = app.activeDocument.selection[0];
変数selにアクティブドキュメントの選択されたものの0番目を入れています。JavaScriptでは1番目からでなく0番目が最初です。
for (var i = 0; i < sel.cells.length; i++) {
forは繰り返しです。
var i = 0;
変数iは0からスタート
i < sel.cells.length;
変数iが選択されたセルの数より少ない間まで繰り返す。
i++
1回繰り返すごとに変数iに1を足していく。
と言う意味です。対応する"}"は●1です。
var txtObj = sel.cells[i];
変数txtObjに選択されたセルのi番目を入れる。
var danraku = txtObj.paragraphs[-1];
変数danrakuに上のtxtObjの最終段落を入れる。[-1];は最後のという事です。AdobeInDesignScript独特の書き方です。普通のJavaScriptではエラーが出ます。
for (var w=danraku.horizontalScale; w >= 10; w--){
こちらもforがあるので繰り返し文ひとつづつバラすと
var w=danraku.horizontalScale;
変数wにdanrakuの水平方向の比率(たぶん100)を入れる。
それがスタートの値
w >= 10;
変数wが10より大きい間実行(長体が10%で止まるという事ですね。)
w--
1回繰り返すごとに変数wから1を引いていく。
対応する"}"は●2です。
txtObj.recompose();//★ここ
これはオーバーフローしているかどうかを再評価するコマンド(サブルーチン)です。
コマンド(サブルーチン)は();で終わっているのが特徴です。
()の中に何か入っている場合があります。
if (txtObj.overflows == false) {break}
もしオーバーフローしていなければこの繰り返しを抜けます。●2に行きます。
もしもの処理はif文といいます。if(もしも文が正しいなら){実行内容}
となっています。
danraku.horizontalScale = w;
オーバーフローしているとこの行が実行されます。
段落danrakuの長体を変数wにセットします。
このwは繰り返しがつづくごとに-1されていきます。
}
閉じ}●2です
}
閉じ}●1です
コメントする