InDesign MY-NOTEBOOK

Wednesday, May 5, 2010

選択中のテキストフレームに文字列をセットするExtendScript, InDesign + JavaScript

選択中のオブジェクトからテキストフレームだけをえり分ける function は、 カネムーメモ を参考にさせていただきました。

settext.jsx

#target "InDesign"

function getSelectedTf(){

	var sels  = app.activeDocument.selection;
	
	//テキストフレーム以外を除外
	for(var i=sels.length-1;i>-1;i--){
		if(sels[i].constructor.name!=='TextFrame'){
			 sels.splice(i,1);
		}
	}
	
	// 先頭のTFを取得
	var tf = sels[0];
	return tf;
}


function appendText( tf , text ){
	var mytf  = app.activeDocument.textFrames.add();
	mytf.contents = text + "\r";
	
	// set pstyle
	//var ps = doc.paragraphStyles.item("$styleName");
	//mytf.texts.item(0).applyParagraphStyle(ps, true);
		
	tf.nextTextFrame = mytf;
	mytf.remove();

}

var tf = getSelectedTf();
appendText( tf, "hello!" );



実行方法

InDesign を起動して、テキストフレームを選択した状態で、settext.jsx を実行します。