フォルダ内のファイル一覧を表示する(InDesign CS2/CS3編)

ファイル一覧を取得するスクリプトのInDesign CS2/CS3版です。
InDesignの場合は他のAdobe系のアプリケーションと事情が異なっています。Windows版とMacOS X版のInDesign CS3の場合は以下のスクリプトで正しく処理されます。InDesign CS3ではMacOS X Tiger/Leopardとも日本語は正しく処理されるので何もする必要がありません。
CR = String.fromCharCode(13);
docObj = app.activeDocument;
foldername = Folder.selectDialog("フォルダを指定してください");
if (foldername)
{
fileList = foldername.getFiles();
result = "";
for (i=0; i<fileList.length; i++)
{
result += File.decode(fileList[i].name) + CR;
}
txtObj = docObj.pages[0].textFrames.add();
txtObj.visibleBounds = ["0cm","0cm","15cm","15cm"];
txtObj.contentType = ContentType.textType;
txtObj.contents = result;
}
日本語の不具合で問題になるのはMacOS X + InDesign CS2の場合です。上記のスクリプトを使うと濁点などが文字化け(□に×)してしまいます。InDesign CS2の場合は、これまでと同じように変換する処理を行なわなければ正しく日本語が処理されません。

dakuten = "%E3%82%99";
handakuten = "%E3%82%9A";
CR = String.fromCharCode(13);
docObj = app.activeDocument;
foldername = Folder.selectDialog("フォルダを指定してください");
if (foldername)
{
fileList = foldername.getFiles();
result = "";
for (i=0; i<fileList.length; i++)
{
filename = fileList[i].name;
filename = convertKana(filename,dakuten,1);
filename = convertKana(filename,handakuten,2);
result += File.decode(filename) + CR;
}
txtObj = docObj.pages[0].textFrames.add();
txtObj.visibleBounds = ["0cm","0cm","15cm","15cm"];
txtObj.contentType = ContentType.textType;
txtObj.contents = result;
}
function convertKana(srcName, code, count)
{
srcName = srcName.replace(/%E3%82%BF%E3%82%99/g, "%E3%83%80"); // ダだけ特殊処理
var text = srcName.split(code); // 濁点
for (var i=0; i<text.length-1; i++)
{
var str = text[i];
if (str == "") continue;
var body = str.substring(0,str.length-2);
var footL = str.substring(str.length-2, str.length);
var hexL = eval("0x"+footL) + count;
hexL = hexL.toString(16).toUpperCase();
text[i] = body+hexL;
}
return text.join("");
}

InDesignの場合はPhotoshopなどと異なり瞬時に処理されます。

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