カネムーメモ in MyBetaBook

ファイル操作基本2: フォルダ内のinddファイルを全て開く

デスクトップに「samples」フォルダを置いて、その中のファイルを順にアラートに表示してみます。

フォルダには Folder オブジェクトを使います。

var fol = new Folder( "~/Desktop/samples" );
var files = fol.getFiles();
for(var i=0,max=files.length;i<max;i++){
    var file = files[i];
    alert( file.name );
}

フォルダ内のファイルは、2行目 fol.getFiles(); で所得します。返り値は配列になります。

それをfor文で順番に参照し、ファイルを変数 file に設定してから、 file.name をアラートで表示します。

スクリプトを実行すると、順番にファイルの名前が表示されます。

フォルダの中にあるのはとりあえずinddだけなので、そのまま app.open に file を渡せば、InDesign で開く事ができます。

var fol = new Folder( "~/Desktop/samples" );
var files = fol.getFiles();
for(var i=0,max=files.length;i<max;i++){
    var file = files[i];
    app.open( file );
}

ですがこのままだと、フォルダにひとつでも indd 以外のファイルが入っている時、エラーになってしまいます。

なので2行目の getFiles() のカッコ内にマスクを指定してやります。

var fol = new Folder( "~/Desktop/samples" );
var files = fol.getFiles( "*.indd" ); //ワイルドカード指定
for(var i=0,max=files.length;i<max;i++){
    var file = files[i];
    app.open( file );
}

これで、filesの中にはinddファイルしか来ないようになります。

getFilesのフィルタには、ワイルドカードの他にも、正規表現、関数が使用できます。

var files = fol.getFiles( /.indd$/ );//正規表現で指定
var files = fol.getFiles( function(f){return /.indd$/.test(f.name)} );//関数で指定

このスクリプトだと、違うフォルダを指定したい場合に毎度スクリプトを書き換えないといけなくなるので、フォルダ選択ダイアログを出して選択させてみます。

フォルダ選択ダイアログを出すには、Folder.selectDialog を使います。

var fol = Folder.selectDialog( "フォルダを選択" );
if( fol ){
    var files = fol.getFiles( "*.indd" ); //ワイルドカード指定
    for(var i=0,max=files.length;i<max;i++){
        var file = files[i];
        app.open( file );
    }
}

このスクリプトを実行すると、以下のようなダイアログが表示されます。

このダイアログで好きなフォルダを指定して、その中のinddファイルを開くことができます。

カネムーメモ in MyBetaBook

Illustratorのアートワークを線だけにしたい
Illustrator Script トラッキングでテキストばらし
ファイル操作基本1: ファイルをInDesignで開く
ファイル操作基本2: フォルダ内のinddファイルを全て開く