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)するとか考えたんだけど、
どうにも迂遠な感じがする。