Home/Support/

Forums

This Question is Answered

1 "helpful" answer available (5 pts)
3 Replies Last post: Oct 5, 2009 3:05 AM by マコト01  
マコト01 User 6 posts since
Jun 18, 2009
Currently Being Moderated

Jul 2, 2009 12:04 AM

リンクの自動修復

InDesign CS3を使用しています。

1000以上あるファイルすべてリンクが外れた状態(△に!マークが入っているアイコン表示)になっているため、

リンクの自動修復をJavascriptを使ってリンク更新+リンクファイルのチェックを行うべく以下のソースを書きました。

 

var fileObj = File.openDialog("開くファイルを指定してください。","InDesign:*.indd");
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
app.open(fileObj);
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;
var imgObj = app.activeDocument.allGraphics;
var fList = "";
var CR = String.fromCharCode(13);
for(i=0; i<imgObj.length; i++){
    var filename = imgObj[i].itemLink.name;
    app.activeDocument.links[i].update(filename);
}
alert(File.decode(fileObj.name) + CR + "がリンクしているファイルは" + CR + CR + fList + CR + "の" + [i] + "点です。");

 

上記スクリプトを実行したところ途中まではリンクが更新されていくのですが、

複数回繰り返したところでvar filename = imgObj[i].itemLink.name;の箇所にマーカーがひかれて「オブジェクトが無効です」で動作がストップしてしまいます。

 

どこに問題があるのかわからないのでご助言をいただきたく書き込ませていただきました。

 

もしくは、InDesignを開いた際に「リンクの更新」に関するアラートが出た際に、

「リンクを自動修復」を選択させる方法があればご教授いただけますでしょうか。

 

よろしくお願いいたします。

MIKIO TANIGAWA User 1 posts since
Aug 18, 2009
Currently Being Moderated
1. Aug 18, 2009 6:57 PM in response to: マコト01
Re: リンクの自動修復

遅いレスになります。

私も同じ経験をしました。

一度に処理できる個数の上限があるようです。

おそらく256個。

ですから、2重ループにして、200個ずつ処理するといいようです。

 

 

 

seuzo User 86 posts since
Jan 12, 2002
Currently Being Moderated
2. Aug 19, 2009 4:31 AM in response to: MIKIO TANIGAWA
Re: リンクの自動修復

1080枚のリンク画像に対して追試してみました。

まず、マコト01さんが失敗しているのは、

app.activeDocument.links[i].update(filename);

の行です。forで回しているのは、GraphicオブジェクトのカウントであってLinkオブジェクトのそれではありません。

単に、すべてのリンクをアップデートしたいだけなら、こう書けます。

 

 

 

var my_doc = app.activeDocument;
var my_image = my_doc.allGraphics;

for (var i = 0; i< my_image.length; i++) {
          my_image[i].itemLink.update();
 }

 

 

MIKIO TANIGAWAさんがおっしゃっているのは、おそらくVBのFor Each...Next ループやASのrepeat with i in lists ループだと思います。つまり、256個の制限はInDesignではなく、言語による制限なんではないかと...

http://adobe.find-answers.net/topic/what-does-mystoryallgraphics-return

http://forums.adobe.com/thread/410200

#上記リンクはid:chalcedony_htnさんのはてなブックマークコメントで教えていただきました。ありがとうございます。


tell application "Adobe InDesign CS3"
     tell document 1
          repeat with i in all graphics
               update item link of i
          end repeat
     end tell
end tell

 

テストではたまたまうまくいってしまったんですが(もしかしたら、AS2.0のタイミングで直っているのかもしれません。)...^^ ASユーザーはこのループが信用できないのを経験的に知っています。

More Like This

  • Retrieving data ...