Adobe編 複数の名簿から同じ人物がいるか調べる

今回は複数の名簿から同じ人物の名前がいるかどうかを調べるスクリプトです。スクリプトはAdobe Photoshop, Illustrator, Bridge, InDesign, ESTKで動作します。
調べる対象となる名簿データは以下のように1行に名前だけが入力されているシンプルなものです。

●名簿(このような名簿が複数あるものとします)
高橋一郎
佐藤二郎
中村三郎
小沢四郎
山川五郎
柴田六郎
山田七郎
田高八郎
皆本九郎

このような名簿が複数あり、その中から、それぞれの人物がが何度出て来るかをカウントするのが以下のスクリプトです。


(function(){
var savefile = File.saveDialog("結果を保存するファイル名を入れて下さい");
if (!savefile){ return; }
var allList = [];
while((checkFile = File.openDialog("名簿ファイルを選択してください", "*.txt"))){
var flag = checkFile.open("r");
if (!flag){
alert("ファイルが開けません");
continue;
}
while(!checkFile.eof){
var userName = checkFile.readln(); // 1行読み込む
if (allList[userName]){
allList[userName] = allList[userName] + 1;
}else{
allList[userName] = 1;
}
}
}
flag = savefile.open("w");
if (!flag){
alert("保存できませんのでESTKのJavaScriptコンソールに出力します");
for(var i in allList){
$.writeln(allList[i]+","+i);
}
return;
}
for(var i in allList){
savefile.writeln(allList[i]+","+i);
}
savefile.close();
})();

スクリプトを実行すると最初に結果を保存するファイル名を尋ねてきます。その後、名簿ファイルを選択するためのダイアログが表示されます。キャンセルボタンをクリックすると結果が保存されます。結果を保存したファイル内容は以下のように先頭に名簿に登場した合計回数とカンマの後に名前がついたものになります。名簿に限らず重複データがどの程度あるのか調べる用途にも利用できます。

1,高橋一郎
1,佐藤二郎
3,中村三郎
1,小沢四郎
1,山川五郎
2,柴田六郎

[サンプルをダウンロード]