実行方法
- extendscript-es5-shimから、indexOf()のポリフィルをダウンロードする
- このスクリプトと同階層に「indexOf.js」を移動する
- 以下のようなテキストデータを作成する
リンクAの現在の絶対パス[タブ]リンクAの差し替え後の絶対パス
リンクBの現在の絶対パス[タブ]リンクBの差し替え後の絶対パス
- 対象としたいinddを開いた状態で実行する
コード
var list = fileRead("before", "after");
var doc = app.activeDocument;
var log1 = log2 = [];
var tmp = doc.links.everyItem().filePath;
for (var i = 0; i < list.length; i++) {
if (tmp.indexOf(list[i]['before']) === -1) {
log1.push(i + 1);
}
if (!new File(list[i]['after']).exist) {
log2.push(i + 1)
}
}
if (log1.length > 0) {
alert(log1 + "行目の変更前のパスを確認してください");
}
if (log2.length > 0) {
alert(log2 + "行目の変更後のパスを確認してください");
}
if (log1.length > 0 || log2.length > 0) {
exit();
}
for (var i = 0; i < list.length; i++) {
for (var j = 0; j < doc.links.length; j++) {
if (doc.links[j].filePath === list[i].before) {
doc.links[j].relink(new File(list[i].after));
}
}
}
function fileRead(value ) {
var tgtFile = File.openDialog("ファイルを選んでください", "*.txt");
if (!tgtFile || !tgtFile.exists) {
alert("中断しました");
exitFlag = true;
exit();
}
var res = [];
var fileReadFlag;
tgtFile.open("r");
tgtFile.encoding = "UTF-8";
try {
while (!tgtFile.eof) {
var args = arguments;
var ln = tgtFile.readln().split(/\t/);
if (ln.length !== args.length) {
alert("読み込みテキストに不備があるため中断します。");
exit();
exitFlag = true;
}
var item = {};
for (var i = 0; i < args.length; i++) {
item[args[i]] = ln[i];
}
res.push(item);
}
fileReadFlag = true;
} catch (e) {
alert(e);
fileReadFlag = false;
} finally {
tgtFile.close();
}
if (!fileReadFlag || res.length === 0) {
alert("ファイルを読み込めませんでした");
exit();
exitFlag = true;
}
return res;
}