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]);
    }
}