※目的のテキストオブジェクトへのアクセス方法は、段落や行など、目的に合わせた文字列の取得を参照。

※ここではすべてテキストフレームを親オブジェクトとしていますが、ストーリーからも同じ方法でアクセスすることができます。(ストーリーについてはテキスト関連・概要を参照)。

 

<段落スタイル>

 

適用されている段落スタイルはappliedParagraphStyleプロパティから取得します。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var p= selObj.paragraphs[0]; //最初の段落
$.writeln (p.appliedParagraphStyle.name); //現在の値

 

段落スタイルを変更・適用するにはapplyParagraphStyle関数を使います。引数にはParagraphStyleオブジェクトを渡します。オプションとして第2引数にfalseを渡すと、既存のオーバーライドされている属性が消去されずにスタイルを適用することができます。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var p= selObj.paragraphs[0]; //最初の段落
var pStyle= app.activeDocument.paragraphStyles.item('honmon_BG'); //ドキュメントに存在する段落スタイルから取得
p.applyParagraphStyle(pStyle); //適用
//p.applyParagraphStyle(pStyle, false); //適用(こうするとオーバーライドは消去されない)

 

<文字スタイル>

 

適用されている文字スタイルはappliedCharacterStyleプロパティから取得します。取得先によっては、この値が配列で返ってくる場合があるので注意が必要です。ただし、複数の文字スタイルがあって配列で受け取る場合でも、配列は常に1つしか返らないようです。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var chs= selObj.characters.itemByRange(0, 2); //頭の3文字
$.writeln (chs.appliedCharacterStyle[0].name); //現在の値
var t= selObj.texts[0]; //文字列を取り出す
$.writeln (t.appliedCharacterStyle.name); //現在の値

 

文字スタイルを変更・適用するにはapplyCharacterStyle関数を使います。引数にはCharacterStyleオブジェクトを渡します。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var chs= selObj.characters.itemByRange(0, 2); //頭の3文字
var cStyle= app.activeDocument.characterStyles.item('red'); //ドキュメントに存在する文字スタイルから
chs.applyCharacterStyle(cStyle); //適用

 

<オーバーライドの消去>

各スタイルのオーバーライドを消去するにはclearOverrides関数を使います。引数を渡すことにより、どちらのスタイルを消去するのかを指定できます(OverrideType定数)。これは省略することもでき、その場合は両方が対象になります。

var selObj= app.activeDocument.selection[0]; //テキスト系の選択物
$.writeln (selObj);
selObj.clearOverrides( OverrideType.PARAGRAPH_ONLY ); //段落スタイルのみ消去

GUI上では、文字が数文字だけ選択されている(=段落ではない)場合でも段落スタイルにオーバーライドが表示(+)されますが、スクリプトの場合は、こういう状態で引数にPARAGRAPH_ONLYを指定してもオーバーライドが消去されないことがあります。

例えば変更が文字色のときなどがそうですが、この場合は引数にCHARACTER_ONLYを指定します。ただし同じ変更であっても、段落オブジェクトに対して実行する場合はPARAGRAPH_ONLYで消去されます。

つまり、文字色の変更は文字スタイルでも段落スタイルでも変更可能なので、段落オブジェクト以外が対象の場合は文字スタイルのオーバーライドとみなされ、段落オブジェクトの場合は段落スタイルの変更とみなされるということです。

適宜オブジェクトをチェックして判断するか、支障がなければ両方のオーバーライドを消去(引数なし)するのが無難です。

 

<注意点>

これらのスタイルをドキュメントから取得するとき、存在しないものを指定しても表面上は取得できたことになってしまいます。

これについては「ドキュメントにある各種スタイルを取得する」のページを参照してください。

 

 

Joomla templates by a4joomla