「InDesignのjavascriptを使って、自動組版をしてみたいんだけど…」と、言われたら下記のようなプログラムを実行してもらい、そこに色々と付け加えてもらってます。
(題材としては、「本人の写真付き名刺」なんかが、最適と思う)
結局、InDesignのプログラムなんて、「ある位置にテキストフレームを作って、文字を入れて、装飾」か「画像の取り込み」がメインだと思ってます。
で、そっから色々と応用をすればいいんじゃないかな。
(もちろん、それだけではありませんが…)
1) InDesignにテキストフレームを作成
// はコメント。実行されない行です。後々、プログラムを見てどんな事をしているかが分かるようにしておきます。
2行目…アクティブなドキュメント(最前面にあるドキュメント)をobjDocという名前(変数に入れておく)にする。
3行目…ページ0(実際は1ページ目。プログラム上は0から数えるんで間違いやすいので気をつけましょう)にobjPageという名前(変数に入れておく)にする。
5行目…objTxtという名前(変数に入れておく)でテキストフレームを追加します。
7行目…objTxtというテキストフレームの位置を設定します。
この設定は[y1,x1,y2,x2]となってちょっと面倒で分かりにくいです。
InDesign上のXとWを足すとx2になります。
InDesign上のYとHを足すとy2になります。
とりあえず、これで実行!
2) 実行結果。ちゃんと枠ができました。
5) 次に、この文字にスタイルをかけてみます。(あらかじめ、InDesign側でスタイルを作っておきます)
6) ちゃんとスタイルがかかりました。
ってな感じ。(説明がヘタですみまません…)
最初は、
「[0]ってなんで[ ] の記号を使ってるの?」
とか、
「2行目の意味がわからん」
とか、色々疑問もあるかと思いますが、それはおいおいでいいかなと。
自分で、枠の位置と大きさを決めて、そこに文字を入れて、スタイルがかかれば、初めの第一歩は上々だと思います。
っていう私もjavascriptを触ったのは一年チョイ前ぐらいからだし、InDesignのjavascriptがほぼ最初でした。
まぁ、今でも試行錯誤の連続で、大変なんですが、やりたい事がなんとなーくやれるようにはなってきました。
とにかく、ソース(プログラム)をたくさんいじって、どーいう動作になるのかを見て、考えて、慣れて行けばやりたい事も出来て来ると思います。
--ソース--
//最前面のドキュメントを取得
objDoc = app.activeDocument;
objPage = objDoc.pages[1];
//テキストフレームを追加
objTxt = objPage.textFrames.add();
//座標の設定
objTxt.visibleBounds = ["1cm","0.5cm","5cm","10cm"];
objTxt.contents = "あいうえお";