top

【InDesignCS3+javascript】link_auto_update.jsx

by buruge ~ 11月 5th, 2009. Filed under: DTP, InDesignCS3+javascript.

お久しぶりです。burugeです。
ちょいちょいと仕事用にスクリプトを書いたりしているのですが、あまりにニッチすぎたり、なんだか忍びなかったりして、アップしていませんでした。
ただ、そういうことしているとどんどん自分の中でブログ更新のハードルが上がって行くし、こういう事に対するモチベーションも下がる一方で全然良い事ないってことに気がついたので、今日は一つアップしてみます。何事もアウトプットですよね。

複数のInDesignドキュメントに対して、同一のIllustratorやPhotoshopのファイルがリンクしてあるとします。
そのリンクファイルに変更を加えた場合、複数のInDesignドキュメント側でリンクの更新を行わなければなりませんが、あまりに数が多い場合「開く」→「リンク更新」→「上書き保存」というのもそれなりにめんどくさい作業です。
そこでリンクの更新作業を一気に行うスクリプトを作成しました。
※ただし一つのフォルダに複数のInDesignドキュメントが格納してある場合に限ります

/*

複数のInDesignドキュメント上のリンクを更新して上書き保存するスクリプト

スクリプトを実行し、InDesignドキュメントが保存されているフォルダを選択すると、フォルダ内のInDesignドキュメントのリンク更新をして上書き保存を行います。

2009.11.05 作成 MacOS10.5.2 InDesignCS3で動作確認
buruge
http://buruge.net

*/
if(app.documents.length > 0){
alert(”ドキュメントを閉じてください。”);
exit();
}
fldObj = Folder.selectDialog (”更新したいInDesignドキュメントのあるフォルダを選択してください”);
if(fldObj){
fileList = fldObj.getFiles(”*.indd”);//フォルダ内のファイル一覧を取得
for(var i=0;i<fileList.length;i++){
//ダイアログアラート回避(スクリプトが止まるので)
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
app.open(fileList[i]);//ベースInDesignを開く
//ダイアログアラートが出るように戻す
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL
var myDoc = app.activeDocument;
var myImg = myDoc.allGraphics;
for(var j=0;j<myImg.length;j++){
myImg[j].itemLink.update();//リンクの更新
}
myDoc.close (SaveOptions.yes);
}
}

実務中に必要になって作ったものですが、このスクリプトの作成にあたってAdobeForumsの以下のディスカッションを参考にしました。

リンクの自動修復

ですので実質、質問者マコト01様と回答者市川せうぞー様のスクリプトを拝借させていただき、私はフォルダ指定を付け加えただけです。

このように参考になるスクリプトをwebで見つけたということが、今回の久々のブログ更新のきっかけでもあります。いや、いつだってwebのスクリプトを参考にしてるんですが、改めてありがたいことだなと思ったのです。
いろんな方のスクリプトを参考にしたり利用さしたりしているので、自分もニッチとか言ってないでこれからなるべくアップしていこうと思います。

Leave a Reply