市川せうぞーさんの名もないテクノ手の
せうぞーさんの「セル内のオーバーフローを解消するスクリプト」
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です
コメントする