コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

023.【ID】フォルダ内の全てのinddに対して指定したスクリプトを実行する

書いたコード

// AppleScript非対応

var myFolder = Folder.selectDialog("ネイティブフォルダを選択してください");
if (!myFolder) {
  alert("中断します");
  exit();
} else {
  myIndds = myFolder.getFiles("*.indd");
}
var myJsx = File.openDialog("スクリプトファイルを選択してください", "*.jsx*");

if (!myJsx) {
  alert("中断します");
  exit();
} else {
  for (var c = 0; c < myIndds.length; c++) {
    app.open(myIndds[c]);
    app.doScript(myJsx);
  }
}

メモ

分かったこと

doScriptを使う場合は、そのスクリプトと呼び出すスクリプトで変数名に重複が無いか注意する必要がある。

分からなかったこと

というものがあるらしい。

# include myJsx.name
# includepath myJsx.fsName
myJsx();

のような書き方ができるのかもしれない。あとで調べる。

  • ファイルが開いているかどうかの判別

Fileオブジェクトが開いているかどうかの判別をどうするのがよいか分からなかった。
readonlyのT/Fを見るというのはどうだろうかとか、open()してtry...catch(e)するとか考えたんだけど、 どうにも迂遠な感じがする。

参考