Google Apps Scriptで西暦を和暦変換するスプレッドシート関数を作る

★気に入ったらシェアをお願いします!


year-number

photo credit: Eva the Weaver 1698 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptを使ってスプレッドシートの自作関数を作る方法についてお伝えしています。

前回、以下記事で「消費税の税込計算をする関数」をお題として、スプレッドシート関数を作る初歩の初歩についてお伝えしました。

初心者でも簡単!Google Apps Scriptでスプレッドシートの自作関数を作る方法
Google Apps Scriptを使えば、スプレッドシートに簡単に自作関数を作ることができます。今回は、消費税の税込計算をする関数を例に、初心者でもできる自作スプレッドシート関数の作り方をお伝えします。

今回、もう一つ簡単なお題として、「西暦から和暦を求めるスプレッドシート関数」を作ってみたいと思います。

if~else if文の使い方、比較演算子、数値と文字列の演算など、Google Apps Scriptの基本も合わせて紹介します。

では、行ってみましょう。

スポンサーリンク

西暦から和暦を算出する

今年って平成28年だっけ?あれ?26年…いや、29年だった気もする…?

そんな感じでお役所の窓口とか銀行でわけわからなくなるときありますね。いつもスマホで「2016 平成」とか「今年 平成」などと検索してしまいます。

全部西暦に統一すればいいのに、と思います。

さて、その和暦年号ですが、西暦から和暦に変換するスプレッドシート関数を作りたいと思います。

例えば

=WAREKI(2016)

とすると、「平成28」と表示したり

=WAREKI(1911)

とすると、「明治44」と表示するという関数です。

西暦と和暦の関係は?

先にロジックを考えてみましょう。西暦と和暦の関係は以下の表にまとめました。

年号 元年の西暦
平成 1989
昭和 1926
大正 1912
明治 1868

ですから、1989年以上であれば平成の年号になりますね。そして、1989年が平成1年、1990年が平成2年、…ですからn年は平成(n-1988)年になります。

同様に全てのパターンについては、nが西暦とすると

  • 1989以上 →平成(n-1988)
  • 1926以上 →昭和(n-1925)
  • 1912以上 →大正(n-1911)
  • 1869以上 →明治(m-1867)
  • それ以外 →計算不能

というロジックになりますね。(明治より前の年号は…ちょっと大変なので不能とさせてもらいました。)

これをGoogle Apps Scriptのスクリプトにしていきます。

スクリプトエディタを使いますが、その使い方は前回の記事を参考にして下さいね。

西暦を和暦に変換する関数のスクリプト

以上のロジックをスクリプトにすると、このようになります。

ちょっとごちゃついている感じもしなくもないですが…前回から加わっているのは、if~else if文、あとは数値や文字列の演算のところですね。

if~else ifで複数の条件分岐

なんとなくお分かりだと思いますが、Google Apps Scriptで条件に従って複数に処理を分岐させるには、if~else if文を使います。

書き方は

if(条件1){
 //処理1
}else if(条件2){
 //処理2

}else{
 //どの条件も当てはまらなかったときの処理
}

となります。条件1が成立していれば処理1が実行されます。成立しなければ条件2が評価され、それが成立していれば処理2が実行されます。最後までどの条件の成立しなければ、elseの後の処理が実行されます。

else ifやelseは省略しても大丈夫です。

条件に使う比較演算子

今回のスクリプトでは「以上」を表す比較演算子「>=」を使っています。条件を表現するには、この比較演算子たちがよく使われます。

Google Apps Scriptでは以下比較演算子を使用できるので、合わせて覚えておくと良いです。

  • 等しい(==)
  • 等しくない(!=)
  • より大きい(>)
  • 以上(>=)
  • より小さい(<)
  • 以下(<=)

ちなみに、条件が成立している場合はその値はture、そうでない場合はfalseという値をとっている、というのを覚えておくと良いです。

数値と文字列の演算

例えば、6行目の右辺ですが、文字列と変数と数値がプラスマイナスされていますよね。

まず、括弧内の「n-1988」が先に演算されます。これは数値-数値ですから、普通に演算をします。

しかし、それに文字列「平成」をプラスせよ、となっていますね。文字列に数値をプラス?わけわからんと思うかも知れません。

Google Apps Scriptの場合、文字列に数値を「+」すると、数値を文字列と考えた上での、文字列の結合になります。

文字列の結合には「+」を使いますので、覚えておきましょう。(VBAでは「&」なので間違えやすいです。両方使っている人は気を付けましょう。)

実行結果

では、作成したスプレッドシート関数WAREKIを使ってみましょう。

西暦を和暦に変換する自作のスプレッドシート関数

ちゃんと変換されていますね。

まとめ

Google Apps Scriptで西暦を和暦に変換する自作のスプレッドシート関数を作成しました。

if~else if文、条件と比較演算子、数値と文字列の演算などについても解説しました。この辺も超大事な基本になります。

さて、次回ですが、クラウド上にあるスプレッドシートならではということで、REST APIを使った郵便番号の自作関数を作ってみたいと思います。

Google Apps ScriptでREST APIを使って郵便番号住所変換スプレッドシート関数を作る
Google Apps Scriptを使ってスプレッドシートの自作関数を作っています。今回はREST APIを使って郵便番号から住所を求めるスプレッドシート関数を作ります。API初心者にもおすすめです。

どうぞお楽しみに!

連載目次:Google Apps Scriptで自作スプレッドシート関数

本シリーズではGoogle Apps Script初心者向け、自作のスプレッドシート関数を作っていきます。一からとっても丁寧な解説を心がけておりますので、どうぞチャレンジしてみて下さい。
  1. 初心者でも簡単!Google Apps Scriptでスプレッドシートの自作関数を作る方法
  2. Google Apps Scriptで西暦を和暦変換するスプレッドシート関数を作る
  3. Google Apps ScriptでREST APIを使って郵便番号住所変換スプレッドシート関数を作る