自動的にインデックス(index.html)を作成する (Adobe製品)

 フォルダ内にある特定のファイル(ここではPDF)のみリストアップして自動的にインデックスを作成するスクリプトを紹介します。フォルダ内にあるPDFファイルのみリストアップして自動的にHTMLを生成しリンクまでしてくれると便利です。MacOS Xでcronを利用すると1時間に1度フォルダ内をチェックして自動的にインデックスを生成するといった事もできます。

 以下のスクリプトはAdobe Photoshop CS, Adobe Illustrator 10, CS, Adobe InDesign CSで動作します。動作確認はしていませんが、Adobe AfterEffects 6.5でも動作するはずです。
 Adobeアプリケーションはファイル処理を行うJavaScript部分は共通なので、一度作ってしまえば変更なしで使うことができます。(Illustrator 10、Photoshop 7の場合はバグがあって、うまく処理されないことがあります)

●自動的にPDFのみリストアップしてインデックスを作成するスクリプト

folderRef = new Folder ("/pdfFolder/");
saveRef = new File("/pdfFolder/index.html");
fileList = folderRef.getFiles("*.pdf");
sFlag = saveRef.open ("w","","");
if (sFlag)
{
saveRef.writeln("<html><head><title>index</title></head>");
saveRef.writeln("<body bgcolor='white'>");
for (i=0; i<fileList.length; i++)
{
saveRef.write("<a href='"+fileList[i].name+"'>");
saveRef.writeln(fileList[i].name+"</a><br>");
}
saveRef.writeln("</body></html>");
saveRef.close();
}


 PDFでなくJPEGファイルの場合は3行目を以下のように変更します。

fileList = folderRef.getFiles("*.pdf");
       ↓
fileList = folderRef.getFiles("*.jpg");

 GIFファイルの場合は以下のようにします。

fileList = folderRef.getFiles("*.pdf");
       ↓
fileList = folderRef.getFiles("*.gif");

 テキストファイルの場合は以下のようにします。

fileList = folderRef.getFiles("*.pdf");
       ↓
fileList = folderRef.getFiles("*.txt");

 特定のファイルでなくて全てのファイルをリストアップする場合には以下のように何も指定しないようにします。

fileList = folderRef.getFiles("*.pdf");
       ↓
fileList = folderRef.getFiles();

 これで特定のファイルのみ抽出できるようになります。が、どのフォルダのPDFを抽出するかを指定しないといけません。これは先頭の1行目の/pdfFolder/がフォルダ名なので、この名前を変更します。ルートディレクトリにあるDigitalフォルダ内であれば以下のようになります。

folderRef = new Folder ("/pdfFolder/");
       ↓
folderRef = new Folder ("/Digital/");

 Digitalフォルダ内のdataフォルダ内にあるPDFを抽出するなら以下のようになります。

folderRef = new Folder ("/pdfFolder/");
       ↓
folderRef = new Folder ("/Digital/data/");

 Windowsでは日本語を使っても問題ありませんが、MacOS Xの場合は日本語フォルダ名では正しく動作しないことがあるので日本語フォルダ名は使うのは避けた方が安全です。

 次にインデックスファイルの保存先です。フォルダの指定は全く同じですが、保存するファイル名(ここではindex.html)もついでに指定します。Digitalフォルダ内のdataフォルダ内にindex.htmlというファイル名で保存する場合は以下のようになります。

saveRef = new File("/pdfFolder/index.html");
       ↓
saveRef = new File("/Digital/data/");

 HTMLタグなどはsaveRef.write()のカッコ内に書きます。スタイルシートとリンクさせたりすると良いでしょう。

 最後におまけでMacOS Xのターミナルから(シェル)特定のファイルのみ抽出するコマンドを書いておきます。

(1)リストアップするフォルダに移動します。ここではルートディレクトリにあるpdfFolderに移動します。
   cd /pdfFolder/

(2)拡張子がpdfなら*.pdf、gifなら*.gif、jpgなら*.jpg、テキストなら*.txtを指定します。
   ls *.pdf

(3)抽出したリストをファイルに保存したい場合は>の後に半角スペースを入れてファイル名を指定します。ここではlist.txtという名前で保存します。
   ls *.pdf > list.txt

(4)ファイルでなくクリップボードに入れたい場合は以下のようにします。こうすると、他のアプリケーションでもぺーストするだけで使えて便利でしょう。
   ls *.pdf | pbcopy



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