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

(DTPtechNote:1475) [AS_Indesign CS2]Clip2Tagtext

rubyでタグづけして、InDesign CS2で選択しているテキストフレームに取り込みます。

set ruby_script_path to "HD:Users:hoge:Desktop:tag:tag.rb" --rubyスクリプトのありか。エンコーディングはShiftJIS
set my_tmp_path to "HD:Users:hoge:Desktop:tag:tmp_clip2Tag.txt" --処理前テキストのありか(なくても勝手に作ります)
set my_tmp_new_path to "HD:Users:hoge:Desktop:tag:tmp_clip2Tag_new.txt" --処理後テキストのありか(なくても勝手に作ります)

if (clipboard info for Unicode text) is not {} then --クリップボードのテキストが空でなかったら
	set clip_str to the clipboard as string  --変数にセットしちゃうのはShiftJIS
	my my_error("クリップボードが空です", true) --クリップボードが空なら中止
end if

my write_file(clip_str as string, my_tmp_path)

do shell script "ruby " & ((quoted form of POSIX path of ruby_script_path) & " " & (quoted form of POSIX path of my_tmp_path) & " > " & (quoted form of POSIX path of my_tmp_new_path))

--InDesign CS2の選択テキストフレームにタグ付きでインポートする。
tell application "Adobe InDesign CS2_J"
	if not (exists selection) or class of selection is not in {text frame, insertion point, text, text column, story, paragraph, line, word, character} then
		my my_error("テキストフレームを選択してください", true) --テキスト以外を選択しているなら中止
	end if
	tell document 1
		place my_tmp_new_path on selection
	end tell
end tell

on write_file(contents_txt, my_file)
	tell application "Finder"
		set FH to open for access my_file with write permission
			write contents_txt to FH
		on error errMsg number errNo
			close access FH
			display dialog "書き込み時のエラーです" & return & errMsg & errNo
		end try
		close access FH
		update my_file
	end tell
end write_file

on my_error(err_str, my_stop)
	if my_stop then
		set my_stop to {"中止"}
		set my_stop to {"中止", "続行"}
	end if
	tell application "Adobe InDesign CS2_J"
		set ans to button returned of (display dialog err_str buttons my_stop with icon 0) --警告ダイアログ出してストップ
		if ans is "中止" then error number -128
	end tell
end my_error