やりたことや覚えたいことがたくさんあるのに、目の前の地味で機械的な(?)作業をやらなければならない時があります。
できればそういった仕事は、自動化して効率よく進めたいものです。
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";
}
あくまで簡単なサンプルっす。もっと上手な書き方があるはずです。。。
結果

自動でこんな表が出来上がります
これを応用していけば、任意のセルに任意のデータの内容を流し込めます。
ただ「Indesign」独自のメソッドやプロパティが分からないので苦労しました。それに特化した書籍も情報も少ないので、もっと広がっていけばいいですね。
参考サイト
かなり参考にさせて頂きました。ありがとうございます。


![商用OK・加工OKの無料画像素材集[KOYU写]](http://www.kys-lab.com/common_files/img/banner/kys_photo_banner_120x90.gif)



コメントする