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

(DTPtechNote:1411) [AS_Indesign CS]選択している数字に和暦を追加



こないだ仕事で使ったやつです。HDの整理してて捨てるのもどうかと思って。
「ほにゃらら1964年〜〜」ってテキストの西暦部分「1964」を選択して、スクリプトパレットから実行すると「ほにゃらら1964(昭和39)年〜〜」になるって感じです。
すべての和暦に対応したければ
http://www.kumamotokokufu-h.ed.jp/kumamoto/bungaku/nengoui.html
あたりを参考にしてくださいませ。


tell application "InDesign CS_J"
	tell document 1
		if not (exists selection) then my my_error("テキストを選択してください", true)
		if not (class of selection is text) then my my_error("テキスト(半角数字)を選択してください", true)
		if (contents of selection is "") then my my_error("半角数字を選択してください", true)
		try
			set seireki to (contents of selection) as integer
		on error
			my my_error("半角数字のみを選択してください", true)
		end try
		set seireki to my wareki(seireki)
		if seireki = false then my my_error("明治以降にしか対応していません", true)
		set contents of selection to (seireki as Unicode text) & "(" & seireki & ")"
	end tell
end tell

-- 西暦年を和暦(明治・大正・昭和・平成)に変換
to wareki(Y)
	if Y > 1988 then --平成
		set W to "平成" & (Y - 1988) -- & "年"
	else if Y > 1925 then --昭和
		set W to "昭和" & (Y - 1925) -- & "年"
	else if Y > 1912 then --大正
		set W to "大正" & (Y - 1911) -- & "年"
	else if Y > 1867 then --明治
		set W to "明治" & Y - (1867) -- & "年"
	else --それ以前はfalseを返しておく^^
		set W to false
	end if
	return W
end wareki

----------------------------------●エラー処理
on 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 "InDesign CS_J"
		activate
		beep
		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