Index > はじめてのInDesign CS3 JavaScript, テーブルの作成(その3 ヘッダを追加)
Mon, February 18, 2008

はじめてのInDesign CS3 JavaScript, テーブルの作成(その3 ヘッダを追加)

InDesignのテーブルにはheaderRowという概念があるので、 myTableWithHeader.jsx に、それを追加してみました。 おそらくは、テーブルがページをまたいだ場合は、ヘッダが自動的に付加される とか?そういううれしい機能があるのではないかと。

ヘッダ付のテーブルを生成するJavaScript

ヘッダ行一行をプラスした 5x5のテーブルを生成します。 結果はこちら(pdf)
横幅は、 ページサイズを計算して、ちょうどぴったり収まるように 各セルの大きさを計算しています。

myTableWithHeader.jsx

//  my table with header 

init();

function init(){
    // 
    var myDoc=app.documents.add();
    var myPage=myDoc.pages.item(0);
    var myTextFrame=myPage.textFrames.add();

    var myBounds = myGetBounds(myDoc,myPage);
    myTextFrame.geometricBounds=myBounds;

    // create table(5x5) object in textframe
    var myTable=myTextFrame.tables.add();
    myTable.headerRowCount = 1;
    myTable.columnCount = 5;
    myTable.bodyRowCount = 5;


    // calc tabel cell size
    var gap=1;
    var w=myBounds[3]-myBounds[1]-gap;
    var h=myBounds[2]-myBounds[0]-gap;
    var cellW=w/myTable.columnCount;
    //var cellH=h/myTable.bodyRowCount;

    //build table header
    var myHeaderRow=myTable.rows.item(0);
    myHeaderRow.fillColor=myDoc.colors.item("Black");
    myHeaderRow.fillTint=30;


    // set up size to cells
    for(var i=0; i<myTable.bodyRowCount+myTable.headerRowCount; i++){
        var myRow=myTable.rows.item(i);
        for(var j=0; j<myTable.columnCount; j++){
            var myCell=myRow.cells.item(j);
            myCell.width=cellW;
            //myCell.height=cellH;
            if(i==0){
                myCell.contents="header ("+i+","+j+")";
            }
            else{
                myCell.contents="hoge ("+i+","+j+")";
            }
        }
    }
}

function myGetBounds(myDoc, myPage){
    with(myDoc.documentPreferences){
        var myPageHeight = pageHeight;
        var myPageWidth = pageWidth;
    }
    with(myPage.marginPreferences){
        var myTop = top;
        var myLeft = left;
        var myRight = right;
        var myBottom = bottom;
    }
    myRight = myPageWidth - myRight;
    myBottom = myPageHeight- myBottom;
    return [myTop, myLeft, myBottom, myRight];
}

ポイント

テーブルオブジェクトに対して、ヘッダ行数を指定。

myTable.headerRowCount = 1;

ヘッダ行の背景色を黒に指定し、30%の透明度で塗る。

var myHeaderRow=myTable.rows.item(0);
myHeaderRow.fillColor=myDoc.colors.item("Black");
myHeaderRow.fillTint=30;

使い方

InDesign CS3をインストールしたフォルダ以下に、配置します。

./Adobe InDesign CS3/Scripts/Scripts Panel/myTableWithHeader.jsx

あとは、InDesignCS3を起動して、 メニューから[ウインドウ→自動化→スクリプト]でスクリプトウインドウが出てきて、 myTableWithHeader.jsxをリストの一覧から選んでダブルクリックで実行。

 Twitter
follow me on Twitter
 Categories