インデザインで、宛名のテンプレートを作り、タブ区切りのテキストを読み込んで、自動で1ページに1件作るジャバスクリプトのサンプルです。発展させれば、いろいろと使えると思います。
テンプレートのインデザインファイルを作成。

インデザインでマスターページにテキストボックスを3つ作り、それぞれテキストボックスを選択してから、スクリプトラベルをつける。
post
郵便番号を入れます。
address
住所を入れます。
name
名前を入れます。
タブ区切りのテキストを準備
名前 住所 郵便番号
山田 太郎 京都府京都市中京区寺町通り御池上る西側 600-0000
佐藤 花子 京都府京都市上京区堀川通り丸太町上る東側 604-0000
鈴木 一郎 京都府京都市東山区三条大橋東詰 605-0000
高橋 美咲 京都府京都市左京区岡崎最勝寺町 606-0000
田中 実 京都府京都市山科区安朱稲荷山町 607-0000
※コパイロットにダミーテキストを作ってもらいました。
エクセルでリストを作成して、『テキスト (タブ区切り) (*.txt)』で名前を付けて保存でOKです。
宛名作成のジャバスクリプト
動きの流れ、
- テキストファイルを1行読み込む
- マスターページを元にページを作成
- スクリプトラベルがついたものを、オーバーライドする
- スクリプトラベル”post”に”〒”とテキストの配列0をいれる。
- スクリプトラベル”address”にテキストの配列1をいれる。
- スクリプトラベル”name”にテキストの配列2と”様”をいれる。
- 行数分繰り返し
- 1ページ目を削除注意
// TAB区切りテキストを使って宛名作成
// TAB文字を取得する
TAB = String.fromCharCode(9);
// ファイルを開くダイアログを表示して、ユーザーにタブ区切りテキストファイルを指定させる
fileObj = new File(File.openDialog("タブ区切りテキストファイルを指定してください"));
// ファイルを読み取りモードで開く
flag = fileObj.open("r");
if (flag) {
// 最初の1行はヘッダーとして読み飛ばす
text = fileObj.readln();
// ファイルの終わりまで繰り返し処理
while (!fileObj.eof) {
var arr = new Array();
// 1行読み込む
text = fileObj.readln();
// タブコードで分割して項目ごとに配列に格納する
txtItem = text.split(TAB);
// 項目数だけ繰り返し処理
for (i = 0; i < txtItem.length; i++) {
arr[i] = txtItem[i];
}
// アクティブなドキュメントを選択する
var myDoc = app.activeDocument;
// 新しいページを追加する
var myPage = myDoc.pages.add();
// マスターページを適用する
myPage.appliedMaster = myDoc.masterSpreads.item("A-マスター");
// マスターページのアイテムをオーバーライドしてテキストを入れられるようにする
var myObjects = myPage.masterPageItems;
for (h = 0; h < myObjects.length; h++) {
// ラベルが "post" のアイテムをオーバーライドする
if (myObjects[h].label == "post") {
myObjects[h].override(myPage);
}
// ラベルが "address" のアイテムをオーバーライドする
if (myObjects[h].label == "address") {
myObjects[h].override(myPage);
}
// ラベルが "name" のアイテムをオーバーライドする
if (myObjects[h].label == "name") {
myObjects[h].override(myPage);
}
}
// スクリプトラベルに基づいて内容を入れる
for (var j = 0; j < myPage.allPageItems.length; j++) {
// ラベルが "post" のアイテムにコンテンツを入れる
if (myPage.allPageItems[j].label == "post") {
myPage.allPageItems[j].contents = "〒" + arr[0];
}
// ラベルが "address" のアイテムにコンテンツを入れる
if (myPage.allPageItems[j].label == "address") {
myPage.allPageItems[j].contents = arr[1];
}
// ラベルが "name" のアイテムにコンテンツを入れる
if (myPage.allPageItems[j].label == "name") {
myPage.allPageItems[j].contents = arr[2] + "様";
}
}
}
// 最初のページが存在する場合のみ削除する
if (myDoc.pages.length > 0) {
myDoc.pages[0].remove();
}
}
流し込んだ後

注意
処理の最後に1ページ消すというのが入っているので、実際に使われるときは、検証をしてください。
下記の古籏一浩さんの本は全部買いました。自動化が一気に進みました。
![]() |
InDesign自動化サンプルプログラム逆引きリファレンス上 (Adobe JavaScript(NextPublishing)) 新品価格 |
![]() |
InDesign自動化サンプルプログラム逆引きリファレンス下 (Adobe JavaScript(NextPublishing)) 新品価格 |
![]() |
InDesign自動化サンプルプログラム InDesign JavaScriptシリーズ (Adobe JavaScriptシリーズ(NextPublishing)) 新品価格 |
![]() |
中古価格 |





コメント