050.【Id】前段落境界線と点対称になるように後段落境界線を設定
書いたコード
var mu = app.scriptPreferences.measurementUnit; app.scriptPreferences.measurementUnit = MeasurementUnits.POINTS; var doc = app.activeDocument; var slct = doc.selection[0]; try { var pStyle = slct.appliedParagraphStyle; } catch (e) { alert("文字を選択するかキャレットを立ててください"); exit(); } if (!pStyle.ruleAbove) { alert("前境界線が設定されていません"); exit(); } pStyle.ruleBelow = true; pStyle.ruleBelowColor = pStyle.ruleAboveColor; pStyle.ruleBelowGapColor = pStyle.ruleAboveGapColor; pStyle.ruleBelowGapOverprint = pStyle.ruleAboveGapOverprint; pStyle.ruleBelowGapTint = pStyle.ruleAboveGapTint; pStyle.ruleBelowLineWeight = pStyle.ruleAboveLineWeight; pStyle.ruleBelowOverprint = pStyle.ruleAboveOverprint; pStyle.ruleBelowTint = pStyle.ruleAboveTint; pStyle.ruleBelowType = pStyle.ruleAboveType; pStyle.ruleBelowWidth = pStyle.ruleAboveWidth; pStyle.ruleBelowLeftIndent = pStyle.ruleAboveRightIndent; pStyle.ruleBelowRightIndent = pStyle.ruleAboveLeftIndent; pStyle.ruleBelowOffset = pStyle.ruleAboveOffset - pStyle.pointSize; app.scriptPreferences.measurementUnit = mu;
メモ
わかったこと
app.scriptPreferences
主なプロパティは以下の通り。
enableRedraw:再描画を有効にするか否か
measurementUnit:スクリプトで長さ値を取得する際に用いる単位。最初に設定しておけばすべて一律の単位で取得されるので変換の必要がない!最後にリセットすること。
scriptsFolder:スクリプトパネルに表示されている📁ユーザーのパス
scriptsList:スクリプトパネルに表示されている📁アプリケーション・📁ユーザー両方のスクリプトファイルのパス一覧(配列)
version:スクリプト実行環境のバージョンテキストの選択範囲とconstructor.nameの対応
キャレットを立てただけ:"InsertionPoint"
1文字:"Character"
複数文字(改行文字を含み、かつスタイルが同一):"TextStyleRange"
1段落:"Paragraph"
それ以外:"Text"
おまけ
前段落境界線と後段落境界線の設定を入れ替えるスクリプト。
プレビューを見ないままがっつり前境界線を作りこんだ後、実は後境界線の方の画面に入力していたことに気づいたとき用。
var doc = app.activeDocument; var slct = doc.selection[0]; try { var pStyle = slct.appliedParagraphStyle; } catch (e) { alert ("文字を選択するかキャレットを立ててください"); exit(); } if (!pStyle.ruleAbove && !pStyle.ruleBelow){ alert("段落境界線が設定されていません"); exit(); } var a = [] for (var prop in pStyle){ if (/ruleAbove.*$/.test(prop)){ a.push([prop, pStyle[prop]]); a.sort(); } } var b = [] for (var prop in pStyle){ if (/ruleBelow.*$/.test(prop)){ b.push([prop, pStyle[prop]]) b.sort(); } } for (var i =0;i<a.length;i++){ pStyle[a[i][0]]=b[i][1]; pStyle[b[i][0]]=a[i][1]; }