Google Apps ScriptでgetYear()関数の日付がおかしくなる問題の対応法

シェアする

  • このエントリーをはてなブックマークに追加
  • 1

今までGoogle Apps Scriptにおいて、DateオブジェクトにgetYear()関数を使うと、日付の西暦を4桁で取得できていました。

もともとgetYear()関数自体、元となったJavaScriptなどでは2000年問題で使用推奨されていない関数ではあるのですが、Google Apps Scriptではこの関数の廃止もされず自分のプログラムで使う場合問題は起きていなかったので、何年もの間そのままにしていました。

ところが、無意識にクロームV8ランタイムを有効にしてしまったので、不具合が発生。getYear()関数を使うと1900年始まりの数字が返されるようになってしまいました。

対処方法として新しいV8ランタイムで動かし続ける場合は

date.getYear()

date.getFullYear()
に置き換えれば対応完了です。

date.getYear()+1900
この方法も使えますが、繰り返しますが推奨されていない関数です。おすすめしません。

コードをいじりたくない場合は、メニューにある「実行」>「Chrome V8を搭載した新しいApp Scriptランタイムを無効にする」を選ぶと、以前のランタイム環境に戻すこともできます。いつ以前のランタイムが廃止になるかわからないので、時間があるうちにV8に対応しておいた方がいいかもしれません。

関連リンク

V8

V8 Runtime Overview