DTP駆け込み寺
  1. [15179] ドキュメント上のリンク更新(フォルダ単位) りさ 2013/01/31 15:47
    1. [15180] Re: ドキュメント上のリンク更新(フォルダ単位) AM66 2013/01/31 16:48
      1. [15181] Re^2: ドキュメント上のリンク更新(フォルダ単位) 流星光輝 2013/01/31 17:07
        1. [15188] ドキュメント上のリンク更新(フォルダ単位) りさ 2013/02/01 07:50
        2. [15197] ドキュメント上のリンク更新(フォルダ単位) りさ 2013/02/01 14:24

[ 返信 ]

ドキュメント上のリンク更新(フォルダ単位)

いつもお世話になっています。
下記はネットでいろいろ見ながら作成したものです。

フォルダを選択しドキュメントを名前の下から順番にリンクの更新をかけて保存するときに別名保存しています。
今回、リンク先が見つからない場合にプログラムがとまってしまうので、もし、リンク先が見つからなかったら、何もしないで次のドキュメントを処理するといった流れにしたかったのですがデバックをすると
常にFFlagがfalseになります。
ご教授お願い致します

if(app.documents.length > 0){
alert("ドキュメントを閉じてください");
exit();
}

fldObj = Folder.selectDialog ("更新したいInDesignドキュメントのあるフォルダを選択してください");
if(fldObj){
fileList = fldObj.getFiles("*.indd");//フォルダ内のファイル一覧を取得

t = fileList.length - 1;
for(var i=0;i<fileList.length;i++){
//ダイアログアラート回避
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;

app.open(fileList[t]);//ベースInDesignを開く

var myDoc = app.activeDocument;
var myImg = myDoc.allGraphics;
for(var j=0;j<myImg.length;j++){

var imageName = myImg[j].itemLink.name ;
var ImagePath = "Links:" + imageName ;
var existsFileObj = new File(ImagePath);
var FFlag = existsFileObj.exists;
//alert (FFlag)
if (FFlag == true){ //存在している
myImg[j].itemLink.update();//リンクの更新
//別名保存
myDoc.save(fileList[t]) ;
}
}

app.activeDocument.close() ;
t = t - 1;
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;
}
}

[15179] りさ (2013/01/31 Thu 15:47)

[ 返信 ]


Re: ドキュメント上のリンク更新(フォルダ単位)

ちゃんと理解して作っているとは思えないのですが。
一行一行が正常に機能しているか確かめながら作った方がいいですよ。

[15180] AM66 (2013/01/31 Thu 16:48)

[ 返信 ]


Re^2: ドキュメント上のリンク更新(フォルダ単位)

> ちゃんと理解して作っているとは思えないのですが。
> 一行一行が正常に機能しているか確かめながら作った方がいいですよ。

AM66さんが言うとおりですね。

>var imageName = myImg[j].itemLink.name ;
リンクしているファイル名のみを取り出す
仮に●●.psdとでもしましょうか。

>var ImagePath = "Links:" + imageName ;
階層を作り出す。
Links:●●.psd
となりますね。

>var existsFileObj = new File(ImagePath);
ここで実際にファイルを捕まえるわけですが、
Links:●●.psd
はフルパスになってないですよね。

>var FFlag = existsFileObj.exists;
なので、trueになることはなくて、
falseになるのです。

[15181] 流星光輝 (2013/01/31 Thu 17:07) web

[ 返信 ]


ドキュメント上のリンク更新(フォルダ単位)

流星光輝さん
いつも助けて頂きありがとうございます
今日、教えて頂いたところをフルパスにしてディバックしてみます
<(_ _)>

[15188] りさ (2013/02/01 Fri 07:50)

[ 返信 ]


ドキュメント上のリンク更新(フォルダ単位)

流星光輝さん、ご指摘の通りフルパス設定で
リンク先の有無(true,false)が判断できました

変更箇所
var ImagePath = "Links:" + imageName ;

var ImagePath = File(myImg[j].itemLink.filePath).fullName;

また助けて頂き感謝です。
ありがとうございました。

[15197] りさ (2013/02/01 Fri 14:24)