只今動作確認を行いました。
問題なく動作しており、作業が完了できそうです。
この度は大変有難うございました。
以下、後学のために書き残しておきます。
今回z-様からご教示頂いたスクリプトはひとつずつInDesignファイルを開いてPDF化する動作を自動化したものです。
よって進捗を示すプログレスメーターは表示されませんが、作業中の動作は画面上で確認できます。
ただし、フォントが見つからない場合などはその旨のアラートが表示されるため、スクリプトを実行しているパソコン画面をチラチラと監視しておく必要はありそうです。
また、スクリプトの実行により一度InDesignデータは開かれるわけですが、同データの更新日時は変わりません(上書きしません)。
あとは、z-様のスクリプトの解説通りです。見る階層は3階層目まで(4行目)、品質は「最小ファイルサイズ」(14行目)との設定です。適宜変更できるそうです。
> ひとまず簡単なテストで動作したので試してみてください。
> 4行目の depthValue = 3; というところで「何階層まで見る」か定義しているので
> 解釈違いがあったら適宜書き換えてください。
>
> ------------------
> var folderObj = Folder.selectDialog("フォルダを選択してください");
> var fileList = [];
> var dirDepth = 1;
> var depthValue = 3;
>
> findIndd(folderObj, dirDepth);
> alert(fileList.length + " 個のinddファイルが見つかりました");
>
> for (var i = 0; i < fileList.length; i++){
> fileObj = new File(fileList[i].fsName);
> savePath = fileObj.fsName.replace(/\.indd$/i, ".pdf");
> app.open(File(fileObj));
> app.activeDocument.exportFile(ExportFormat.pdfType, savePath, false, "[最小ファイルサイズ]");
> app.activeDocument.close(SaveOptions.no);
> }
>
> alert("完了");
>
> function findIndd(dir, dep){
> var files = dir.getFiles();
> for(var i = 0; i < files.length; i++){
> if(files[i].displayName.match(/\.indd$/i)){
> fileList.push(files[i]);
> continue;
> }
> if(dep < depthValue && files[i].constructor.name == "Folder"){
> findIndd(files[i], dep + 1);
> }
> }
> }
> ------------------
>
> 本来、フリーで公開されているスクリプトでも著作権の主張や
> 加工・二次配布の禁止(のお願い)など記載してある場合がありますが
> tu-kazu.jpさんのサイトで特にそういう記載が見つけられなかったのと
> 元のスクリプトの原型がほとんど残らなかったので、まあいいかと…
[20605] メディカル12 (2021/08/23 Mon 09:50)