索引を作成する

■プログラム説明(ソースコード説明)
 開かれているドキュメント内から必要な単語を拾いだしてテキストファイルとして保存します。索引を作成する場合に便利です。索引は別のテキストファイルとして用意しておきます。例えば

サンプル
シリーズ
InDesign
Photoshop

のように1行に1つの単語を書いておきます。ここでの文字列は正規表現文字列になりますので、より幅広い索引の作成が可能になります。



■ソースコード
filename = File.openDialog("索引を作成する単語リストのファイルを指定してください");
if (filename)
{
wordObj = new File(filename);
flag = wordObj.open("r");
if (flag == true)
{
savefile = File.saveDialog("保存するテキストファイル名を入れて下さい");
if (savefile)
{
saveObj = new File(savefile);
flag = saveObj.open("w");
if (flag == true)
{
while(!wordObj.eof)
{
chkWord = wordObj.readln(); // 1行読み込む
resultText = checker(chkWord);
n = resultText.length - 1;
text = chkWord + "..."+resultText.substr(0,n);
saveObj.writeln(text);
}
saveObj.close();
wordObj.close();
}else{
alert("ファイルが保存できません。書き込み権限等をチェックしてください");
}
}
}else{
alert("索引ファイルが開けません。");
}
}

function checker(checkWord)
{
var docObj = app.activeDocument;
var totalPage = docObj.pages.length; // 全体のページ数
var pageObj = docObj.pages;
var i,j;
var result = " ";
for (i=0; i<pageObj.length; i++)
{
for (j=0; j<pageObj[i].textFrames.length; j++)
{
regObj = new RegExp(checkWord,"g");
if (pageObj[i].textFrames[j].contents.match(regObj))
{
result = result + (i + 1) + ",";
break;
}
}
}
return result;
}


■ポイント
 日本語の場合、文字コードはUnicode (UCS-2, UTF-16)にしてください。最後の単語の後には改行を入れないでください。改行を入れてしまうと全てが索引対象となってしまいます。保存後のテキストファイルの文字コードはUTF-8になります。

■実際のスクリプトをダウンロード(sample.jsx.zip)