Indesign CS3 JavaScriptで表組作成

November 22, 2008
indesign_tablemain.gif

やりたことや覚えたいことがたくさんあるのに、目の前の地味で機械的な(?)作業をやらなければならない時があります。

できればそういった仕事は、自動化して効率よく進めたいものです。

DTPの世界でも「Indesign」で「JavaScript」を活用すれば、かなりの時間が削減できます。

よくあるのがエクセルデータから任意のテキストを抜き出し、フォーマットの決まったレイアウトに流し込むといった作業。いちいちコピペなんかしてられないし、間違う可能性も高いです。

そんな時、「JavaScript」でCSVやXMLなどのデータを配列に格納しマトリックスにすると、各データを参照しやすいです。

簡単なサンプルソース(Indesign CS3用)

「表スタイル」や「段落スタイル」を埋め込んだ「セルスタイル」は、あらかじめ「Indesign」で設定しておきます。

var docObj = app.activeDocument;

//配列作成
var txtArray = new Array();
txtArray[0] = ["1","2","3"];
txtArray[1] = ["4","5","6"];
txtArray[2] = ["7","8","9"];

//表を入れるテキストフレーム作成
var tfObj = docObj.textFrames.add();
tfObj.visibleBounds = ["98.5mm","55mm","198.5mm","155mm"];

//テーブル作成
var tblObj = tfObj.tables.add();

//表の行列を決める
tblObj.columnCount = 3; //よこ
tblObj.bodyRowCount = 3;//たて

//表スタイル適用(Indesignで作成しておく)
tblObj.appliedTableStyle = "表スタイル 1"; 

for(var i = 0; i < 3; i++){	
	//セルの幅と高さ
	tblObj.rows[i].width = "33mm"; 
	tblObj.rows[i].height = "33mm"; 
		
	//各セルに配列の内容を入れる
	tblObj.rows[0].cells[i].contents = txtArray[0][i]; 
	tblObj.rows[1].cells[i].contents = txtArray[1][i]; 
	tblObj.rows[2].cells[i].contents = txtArray[2][i]; 
	
	//セルスタイル適用
	tblObj.rows[0].cells[i].appliedCellStyle = "セルスタイル 1";
	tblObj.rows[1].cells[i].appliedCellStyle = "セルスタイル 1";
	tblObj.rows[2].cells[i].appliedCellStyle = "セルスタイル 1";
}

あくまで簡単なサンプルっす。もっと上手な書き方があるはずです。。。

結果

sample

自動でこんな表が出来上がります

これを応用していけば、任意のセルに任意のデータの内容を流し込めます。

ただ「Indesign」独自のメソッドやプロパティが分からないので苦労しました。それに特化した書籍も情報も少ないので、もっと広がっていけばいいですね。

参考サイト

かなり参考にさせて頂きました。ありがとうございます。

InDesign CS3自動化作戦 with JavaScript

関連記事

トラックバック(0)

コメントする


画像の中に見える文字を入力してください。

PageTop