[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1576) Re: [JS_InDesign CS2]画像の再リンク



InDesign CS3用にAppleScriptで書き直してみた。

(*
relink.applescript
(c)2007 www.seuzo.jp

特定のリンクファイルを再リンクする
取扱危険なので、充分テスト&&検証してください^^

2007.07.01	ver.0.2	InDesign CS3のAppleScript版、政治的な理由

*)

--古いリンクファイルのフルパス名。
set old_path to "
Work:test:old:071.eps
Work:test:old:045.eps
Work:test:old:034.eps
Work:test:old:026.eps
Work:test:old:005.eps
Work:test:old:021.eps
Work:test:old:015.eps
Work:test:old:011.eps
" as Unicode text
--新しいリンクファイルのフルパス名。上のold_pathの各行と対応している必要がある。
set new_path to "
Work:test:new:071.psd
Work:test:new:045.psd
Work:test:new:034.psd
Work:test:new:026.psd
Work:test:new:005.psd
Work:test:new:021.psd
Work:test:new:015.psd
Work:test:new:011.psd
" as Unicode text

--======================================================
--こっから処理
tell application "Adobe InDesign CS3"
	my doc_exists()
	set my_count to 0 --リンク修正数のカウンタ
	tell document 1
		repeat with i in all graphics --すべてのグラフィックについて
			set i to item link of i
			set my_status to status of i
			
			if my_status is link out of date or my_status is link missing then --リンクが切れていたら以下を実行
				set my_file_path to file path of i
				repeat with ii from 1 to count paragraph of old_path
					set a_old_path to paragraph ii of old_path --1行持ってくる
					if a_old_path is my_file_path then --a_old_pathと合致したら
						relink i to paragraph ii of new_path --新しいパスにリンクしなおす。
						update i
						set my_count to my_count + 1
					end if
				end repeat
			end if
		end repeat
		
	end tell
end tell
display dialog (my_count & "箇所のリンクを更新しました") as Unicode text

--------------------------------------------------------●ドキュメントが開かれているかどうか
to doc_exists()
	tell application "Adobe InDesign CS3"
		if not (exists document 1) then
			activate
			my my_error("ドキュメントが開かれていません", true)
		end if
	end tell
end doc_exists

----------------------------------●エラー処理
to my_error(err_str, my_stop)
	set err_str to err_str as Unicode text
	if my_stop then
		set my_stop to {"中止"}
	else
		set my_stop to {"中止", "続行"}
	end if
	tell application "Adobe InDesign CS3"
		activate
		beep
		set ANS to button returned of (display dialog err_str buttons my_stop) --警告ダイアログ出してストップ
		if ANS is "中止" then error number -128
	end tell
end my_error