かずきち。の日記

サーバサイドエンジニアのつぶやき

コードあり!和暦変換関数をGoogleスプレッドで自作してしまおう!

令和になって和暦対応Google関数を作りたい!

f:id:kazukichi_0914:20210904145832g:plain

自分がよく見るLINEグループで和暦対応のGoogleスプレッドシートがほしいと相談を受ける。
まぁ確かにGoogleアメリカの会社ですし、「令和」とか「平成」とかに対応していないのは事実です。
自分は和暦を使わないので、そんなニーズもあるのだなと。

他人の用意してくれた関数を使うのはどうなのでしょうか?
なのでオリジナル関数を作ってしまいましょう!
もうSUM関数とかMicrosoftGoogleが用意した関数に踊らされるのは終わりです。
関数くらい自分で用意です。

まずは完成形

docs.google.com

上記リンクが和暦計算シートですのでアクセスしてみてください。
単なるスプレッドシートじゃないか?とお思いですが、このスプレッドシートは裏でコードが走っています。

完成体:
騙されたと思ってA1セルに「=WAREKI(2021)」と入力してみましょう。


f:id:kazukichi_0914:20210904150358g:plain

こうですよ?できましたか?

f:id:kazukichi_0914:20210904150505g:plain

そうすると=WAREKI()関数

が発動して、西暦2021年は令和3年と変換ができます。

これは会社で使えそうですね。

function WAREKI(y){ 
  let result = 10;

  if(y >= 1868){
    if(y - 1868 > 1){
      result = `明治${y - 1868}年`;
    }else{
      result = `明治元年`;
    }
  }

  if(y >= 1912){
    if(y - 1912 > 1){
      result = `大正${y - 1912}年`;
    }else{
      result = `大正元年`;
    }
  }

  if(y >= 1926){
    if(y - 1926 > 1){
      result = `昭和${y - 1926}年`;
    }else{
      result = `昭和元年`;
    }
  }

  if(y >= 1989){
    if(y - 1989 > 1){
      result = `平成${y - 1989}年`;
    }else{
      result = `平成元年`;
    }
  }

  if(y >= 2018){
    if(y - 2018 > 1){
      result = `令和${y - 2018}年`;
    }else{
      result = `令和元年`;
    }
  }
  return result;
}

コードは至ってシンプルでこのスクリプトを裏で走らせるだけです。
会社で令和対応したい方はぜひこの関数を埋め込んでみてください。
10秒で令和対応が可能ですよ。

docs.google.com

使ってみたい方はこちらから試し書きをお願いします!
使えるなと思った方はいいねとシェアをお願いします!

f:id:kazukichi_0914:20210904161113g:plain

感謝の声もいただけると大変励みになります♪

追記

昭和1年とか令和1年とかはおかしいというご指摘を受けましたので、元年エラー処理を追記しました!