またまた、過去にいろいろと探って集めて作った、表関連のInDesign Javascript。
先日と同様に動かないのもあるかも…です。
基本的に今までの表関連のJavascriptはInDesign CS2で動作確認しております(た、たぶん…)

これらのJavascriptに関して、一切の責任は負えませんので、ご了承ください。

(参考程度として考えて頂けるとありがたい。しかし、Javascript関連のネタが尽きてきたなぁ…(笑))


//●セルをマージする
//あらかじめ、ドキュメントを作成しておいて下さい。
//テキストフレームを作成。
//テキストフレームの位置を設定。
//テーブルを作成。
//列と行を設定。
//セルをマージ。


//テキストフレーム作成
txtObj = app.activeDocument.textFrames.add();
//テキストフレームの位置 [y,x,]
txtObj.visibleBounds = ["20mm","20mm","110mm","190mm"];
//テーブルを追加
tblObj = txtObj.tables.add();
//行数と列数 column=列  Row=行
tblObj.columnCount = 4
tblObj.bodyRowCount = 8;

//全セルの列幅設定
tblObj.width = "150mm"; //よこ
//全セルの行高さ設定
tblObj.height = "70mm"; //たて

sel = app.activeDocument.textFrames;

sel[0].tables[0].cells[12].merge(sel[0].tables[0].cells[16]); //縦のセルにマージ
sel[0].tables[0].cells[8].merge(sel[0].tables[0].cells[11]);  //横のセルにマージ
sel[0].tables[0].cells[1].merge(sel[0].tables[0].cells[2]); //横のセルにマージ



//●行を追加する
//あらかじめ、ドキュメントを作成しておいて下さい。
//テキストフレームを作成。
//テキストフレームの位置を設定。
//テーブルを作成。
//列と行(2行)を設定。
//行を1行追加。結果3行になる。


//テキストフレーム作成
txtObj = app.activeDocument.textFrames.add();
//テキストフレームの位置 [y,x,]
txtObj.visibleBounds = ["20mm","20mm","110mm","190mm"];
//テーブルを追加
tblObj = txtObj.tables.add();
//行数と列数 column=列  Row=行
tblObj.columnCount = 4
tblObj.bodyRowCount = 2;

//全セルの列幅設定
tblObj.width = "150mm"; //よこ
//全セルの行高さ設定
tblObj.height = "40mm"; //たて

sel = app.activeDocument.textFrames;

//行追加
sel[0].tables[0].rows.add();



//●文字スタイルをかける
//あらかじめ、ドキュメントを作成しておいて下さい。
//あらかじめ、文字スタイルを作成しておいて下さい。この例は「新ゴM-20q」
//テキストフレームを作成。
//テキストフレームの位置を設定。
//テーブルを作成。
//列と行を設定。
//文字入力。
//セルの3番目(0から始まるので、[2]となる)にスタイルをかける。


//テキストフレーム作成
txtObj = app.activeDocument.textFrames.add();
//テキストフレームの位置 [y,x,]
txtObj.visibleBounds = ["20mm","20mm","110mm","190mm"];
//テーブルを追加
tblObj = txtObj.tables.add();
//行数と列数 column=列  Row=行
tblObj.columnCount = 4
tblObj.bodyRowCount = 2;

//全セルの列幅設定
tblObj.width = "150mm"; //よこ
//全セルの行高さ設定
tblObj.height = "40mm"; //たて

sel = app.activeDocument.textFrames;
sel[0].tables[0].contents = ["1","あ","いうえ","お"];

//文字スタイルをかける
sel[0].tables[0].cells[2].texts.item(0).appliedCharacterStyle= "新ゴM-20q";



//●ドキュメント内のテーブル数を取得する
//ドキュメントをアクティブ(最前面にする)にします。


//テーブル数
iCnt = 0;
//最前面のドキュメントを取得
objDoc = app.activeDocument;

//ドキュメント内のテキストフレーム数分繰り返し
for ( i = 0; i < objDoc.textFrames.length; i++ ){
 //テキストフレームを取得
 objTxt = objDoc.textFrames[i];
 //テキストフレーム内のテーブル数を取得
 iCnt = iCnt + objTxt.tables.length;
}
alert("テーブル数:" + iCnt);



//●テーブルのセル数、列数、行数を取得する
//ドキュメントをアクティブ(最前面にする)にします。


//最前面のドキュメントを取得
objDoc = app.activeDocument;

//ドキュメント内のテキストフレーム数分繰り返し
for ( i = 0; i < objDoc.textFrames.length; i++ ){
 //テキストフレームを取得
 objTxt = objDoc.textFrames[i];
 //テキストフレーム内のテーブル数分繰り返し
 for ( n = 0; n < objTxt.tables.length; n++ ){
  //テーブルオブジェクトを取得
  objTable = objTxt.tables[n];
  //全セル数
  cellCnt = objTable.cells.length;
  //列数
  columnCnt = objTable.columns.length;
  //行数
  rowCnt = objTable.rows.length;
  alert("全セル数:" + cellCnt + "/列数:" + columnCnt + "/行数:" + rowCnt);
 }
}



//●セルの横結合数を取得する
//ドキュメントをアクティブ(最前面にする)にします。


//最前面のドキュメントを取得
objDoc = app.activeDocument;

//ドキュメント内のテキストフレーム数分繰り返し
for ( i = 0; i < objDoc.textFrames.length; i++ ){
 //テキストフレームを取得
 objTxt = objDoc.textFrames[i];
 //テキストフレーム内のテーブル数分繰り返し
 for ( n = 0; n < objTxt.tables.length; n++ ){
  //テーブルオブジェクトを取得
  objTable = objTxt.tables[n];
  //全セル数
  cellCnt = objTable.cells.length;
  alert("全セル数:" + cellCnt);
  cell = 0;
  while ( cell < cellCnt ) {
   alert("セル[" + cell +"] 横結合数:" + objTable.cells[cell].columnSpan);
   cell++;
  } 
 }
}



//●セルの縦結合数を取得する
//ドキュメントをアクティブ(最前面にする)にします。


//最前面のドキュメントを取得
objDoc = app.activeDocument;

//ドキュメント内のテキストフレーム数分繰り返し
for ( i = 0; i < objDoc.textFrames.length; i++ ){
 //テキストフレームを取得
 objTxt = objDoc.textFrames[i];
 //テキストフレーム内のテーブル数分繰り返し
 for ( n = 0; n < objTxt.tables.length; n++ ){
  //テーブルオブジェクトを取得
  objTable = objTxt.tables[n];
  //全セル数
  cellCnt = objTable.cells.length;
  alert("全セル数:" + cellCnt);
  cell = 0;
  while ( cell < cellCnt ) {
   alert("セル[" + cell +"] 縦結合数:" + objTable.cells[cell].rowSpan);
   cell++;
  } 
 }
}