西暦に和暦を追加。
/*
このスクリプトを利用して起こった不具合の責任は取れません。
ご了承下さい。
*/
// アプリ指定
#target "indesign";
// スクリプト名
var scriptName = "西暦に和暦を追加";
// 求和暦関数
function queryWarek(gengou, gannen, owariNoToshi, year){
if (year >= gannen && year <= owariNoToshi) {
var wareki = gengou;
var warekiNen = year - (gannen - 1);
if(warekiNen == 1){
wareki += "元";
}else{
wareki += warekiNen;
}
return wareki;
}else{
return "";
}
}
//スクリプトの動作指定(一つのアンドゥ履歴にする、及び、アンドゥ名)
app.doScript(function () {
// ダイアログ
var dialogueFlg = confirm("しても良いかな?"
,"", scriptName);
// Noの場合
if (dialogueFlg == false) {
// 終了
exit();
}
// 初期化
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
// 「4桁の西暦 + 年」を検索
app.findGrepPreferences.findWhat = "(\\d{4})年";
var found = app.activeDocument.findGrep();
for (var i = 0; i < found.length; i++) {
// 検索結果文字
var text = found[i].contents;
// 数字部分を抽出
var year = parseInt(text.match(/\d{4}/)[0], 10);
// 和暦に変換
var wareki = "";
{
var meijiGannen = 1868; // 明治元年
var taisyouGannen = 1912; // 大正元年
var syouwaGannen = 1926; // 昭和元年
var heiseiGannen = 1989; // 平成元年
var reiwaGannen = 2019; // 令和元年
// 明治
wareki += queryWarek("明治", meijiGannen, taisyouGannen, year);
// 大正
wareki += queryWarek("大正", taisyouGannen, syouwaGannen, year);
// 昭和
wareki += queryWarek("昭和", syouwaGannen, heiseiGannen, year);
// 平成
wareki += queryWarek("平成", heiseiGannen, reiwaGannen, year);
// 令和
wareki += queryWarek("令和", reiwaGannen, 9999, year);
}
// 追加
found[i].contents += "(" + wareki + ")";
}
// 後処理
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
//スクリプトの動作指定の続き
}, ScriptLanguage.JAVASCRIPT, [scriptName], UndoModes.ENTIRE_SCRIPT, scriptName);