クリエイター手抜きプロジェクト[271]Adobe編 複数の名簿から同じ人物がいるか調べる/古籏一浩

投稿:  著者:  読了時間:4分(本文:約1,700文字)


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

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

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



(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,柴田六郎


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

今回のテーマは、時事ネタとはあまり関係ありません。あと、忙しくて本が積ん読状態......。

・Retro Driver【10話まで書いた】
< http://www.openspc2.org/reibun/comipo/RetroDriver/ >

・HTML5+JavaScriptアイデア&実践サンプル【発売中】
< http://www.amazon.co.jp/dp/4048704486 >

・JavaScriptコーディング ベストプラクティス【発売中】
< http://www.amazon.co.jp/dp/4844361791 >

・Google API Expertが解説するHTML5ガイドブック
< http://www.amazon.co.jp/dp/4844329278 >

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集 発売中
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >