Google Apps Script

Google Apps Scriptで和暦表示用の関数を自作する方法

スポンサーリンク

概要

スプレッドシートでは和暦が対応されていません。場合によって日付を和暦に変換ができればいいと思うことがあると思います。

Google Apps Scriptでは関数も自作をすることができるので、今回は和暦表示用の関数を自作する方法を説明します。

ソースコード

スクリプトエディタを開く

リストのスクリプトエディタを開きます。

スクリプトエディタの開き方は、「GAS(Google Apps Script)のコンテナバインド型とスタンドアロン型」のコンテナバインドスクリプトを参考にしてください。

ソースコード

以下のソースコードをスクリプトエディターに貼り付けてください。

/**
 * 西暦-和暦のマスタ
 */
const SEIREKI_WAREKI_MST = [
  ['2019/05/01', '令和'], 
  ['1989/01/08', '平成'],
  ['1926/12/25', '昭和'],
  ['1912/07/30', '大正'],
  ['1873/01/01', '明治']
];

/**
 * 西暦の日付を和暦で表示します。
 * 日付が未設定の場合は現在日時を西暦で表示します。
 * 明治以前の日付は西暦のまま表示されます。
 * 
 * @param {Date} 西暦の日付
 * @return 和暦
 * @customfunction
 */
function WAREKI(d) {

  // 処理用の日付用変数
  let df = new Date();

  // 日付型か入力チェック
  try {
    df = new Date(d);
  }
  catch(ex) {
    throw new Error("日付を引数に設定してください。");
  }

  // 西暦-和暦のマスタの件数分繰り返す
  for (let i = 0; i < SEIREKI_WAREKI_MST.length; i++) {

    // 基準日を日付型に変換
    let rdate = new Date(SEIREKI_WAREKI_MST[i][0]);

    // 基準日より日付が大きい場合
    if (rdate <= df) {

      // 年の算出
      let y = df.getFullYear() - rdate.getFullYear() + 1;
    
      // 年が1の場合は、元年を設定
      if (y == 1) y = '元';
    
      // 和暦の組み立て
      return `${SEIREKI_WAREKI_MST[i][1]}${y}年${Utilities.formatDate(df, 'Asia/Tokyo', 'M月d日')}`;
    }
  }

  // 西暦-和暦のマスタ以前の日付の場合は西暦のまま表示
  return Utilities.formatDate(df, 'Asia/Tokyo', 'yyyy年M月d日');
}

使い方

A2のセルに日付を入力しておき、和暦を表示したいセルに「=wareki(A2)」と入力をするだけで使用ができます。

ソースコードのドキュメンテーションコメントで「@customfunction」を入れているので、入力中の関数の補完候補に表示されたり、コメントが以下のように表示されます。

最後に

いかがだったでしょうか?簡単に自作の関数を作ることができました。ぜひ活用してみてください。

あくまでサンプルコードです。使用する場合はご自身の利用に合うかご確認の上使用をしてください。

タイトルとURLをコピーしました