InDesign スクリプト ブックのInddファイルのリンクをブックと同じフォルダーのファイルに更新する
InDesignで作業する場合、inddファイルをブックに登録してDTPすると思います。
たとえば、今のデータをそのままバックアップとして残し、inddファイルやブックファイル一式をコピーして作業する場合、注意が必要です。
コピーしたブックファイルからinddファイルを開くと、コピーする前のフォルダーにあるinddが開いてしまいます。
それに気づかずに作業してしまうと、コピー前のinddファイルを編集してしまうことになります。
ブックファイルは、絶対パスでinddファイルを登録しているのです。
この問題を解決するために、ブックファイルに登録したinddファイルを、ブックファイルと同じフォルダーのファイルに更新するスクリプトを作成しました。
InDesignCS5で動作確認済みです。
難点は、時間がかかることでしょうか。
手元の7ファイルで試したところ、2分程度かかりました。(Windows10 pro,i5-3470 3.20GHz, メモリ8GB)
他に何か良い方法があれば、教えてください。
function modifyBook(){ var appBook=app.books.item(0); var bookPath=appBook.filePath; bookPath = decodeURI(bookPath); // URLデコード var fileList = new Array(); var fileListNew = new Array(); var inddFileitem; var i = 0; var inddFileLen=appBook.bookContents.length; var inddFile=appBook.bookContents; for (i=0;i<inddFileLen;i++){ inddFileitem=inddFile.item(i); fileList[i]=appBook.bookContents.item(i).fullName.name; fileListNew[i]=bookPath+"/"+fileList[i]; fileListNew[i]=new File(fileListNew[i]); // /を\に変換 inddFileitem.replace(fileListNew[i]); } }