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

(DTPtechNote:1467) [AS_Indesign CS2]add_index



(*
add_index 0.1	(c)2006 www.seuzo.jp
2006.10.14	とりあえず書いてみた。なんだかキーボードマクロっぽくてかっこわるい。

選択文字を索引に追加します。読みを自動入力します。
「Monzai」が必要です。
http://www.oomori.com/soft/monzai/index.html

●使い方
1)文字列を選択します。
2)このスクリプトを走らせます。
3)ダイアログが出ます。読みがまちがっていたら直して追加またはOKボタンをクリックします。
●注意
索引ウインドウを出す時に、ショートカット(コマンド+u)を使っています(だってUI作るのめんどいから)。ショートカットを変更したらそこも変更すること。
クリップボードを書き換えます。
*)


tell application "Adobe InDesign CS2_J"
	activate
	--my ver() --よく使うならここは外してよい
	--my doc_exists() --ドキュメントを開いていないときに実行しないなら外してよい
	
	if not (exists selection) or class of selection is not in {text, text column, story, paragraph, line, word, character} then
		my my_error("索引に加えたい文字列を選択してください", true) --テキスト以外を選択しているなら中止
	end if
	
	--読みをget
	set my_contents to contents of selection --選択文字をget
	set ans to do script ("'" & my_contents & "'.match(/^[ -~ぁ-ヶ]+$/);") language javascript
	if ans is nothing then
		tell application "monzai"
			set my_yomi to convert controller 1 mode 2 moji my_contents
			set the clipboard to my_yomi --クリップボードに入れる
		end tell
	else
		set the clipboard to my_contents
	end if
	
	
	--実行
	try
		tell application "System Events"
			tell process "Adobe InDesign CS2_J"
				keystroke "u" using command down
				keystroke tab
				keystroke tab
				keystroke tab
				keystroke tab
				keystroke "v" using command down
			end tell
		end tell
		
	on error errMsg number errNum
		my my_error(errMsg & return & errNum, true) --エラーが起こったら中止
	end try
	
end tell


--------------------------------------------------------●InDesignバージョン確認ルーチン
to ver()
	tell application "Adobe InDesign CS2_J"
		set my_version to (version of script preferences) as real
		if my_version < 4 or my_version > 4.9 then
			activate
			my my_error("このプログラムはInDesign CS2以外では動作しません", true)
		end if
		my_version
	end tell
end ver

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



----------------------------------●エラー処理
on my_error(err_str, my_stop)
	if my_stop then
		set my_stop to {"中止"}
	else
		set my_stop to {"中止", "続行"}
	end if
	tell application "Adobe InDesign CS2_J"
		activate
		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