InDesignでリンクが更新されたら!マーク出さずに自動的に同期させる…って環境設定にないよね?たぶんないハズ…
「元データを編集」を使うと1回は自動更新してくれるみたいだけどね
なんで1回だけなんだろね
てことでそれをやるスクリプト。
#targetengine "session"
app.addEventListener('afterLinksChanged',function(ev){
var myLinks=ev.target.links;//targetはDocumentのハズ
for(var i=myLinks.length-1;i>=0;i--){
if (myLinks[i].status==LinkStatus.LINK_OUT_OF_DATE) myLinks[i].update();
}
}).name="UpdateAfterLinksChanged";
つかいかた
実行したらすべてのドキュメントで自動更新が有効になります。
1回InDesignを終了させたら無効になります。
起動したまま無効にしたい場合は
app.eventListeners.item("UpdateAfterLinksChanged").remove();
を実行します。
常に有効にしたい場合は.jsxファイルをStartup Scriptsフォルダに放り込みます
どうでもいいこと
無効なリンクをupdate()しちゃうとエラーが出るみたいなので、evryItem使わずに丁寧にループ回してます。
最後の行が分かりにくいけど、addEventListener()の戻り値が今追加したEventListenerオブジェクトなのでそれに名前をつけとこうという意味です。
更新しちゃうけどいい?的なダイアログを1回だけ表示させるバージョンも作ろうとしたけど思いのほか難しくて断念。
1つのリンクを1回更新するだけでafterLinksChangeイベントが2,3回発生するみたいで、すごくしつこく聞いてくる人みたいになってしまう。
イベントリスナーのお勉強中だけど意外とできること少なそうでガッカリ中。
PR