見出し画像

#33 GAS で時間がずれる?

GAS のプログラムで、「Class Date」などで日時を扱ったときに、何だかうまく動作せず、ずれた時間になる場合には、タイムゾーンを確認してみましょう。
この記事では、GAS のタイムゾーン設定の確認、日本時間への変更方法を説明します。

現象

簡単なサンプルプログラムですが、以下のように現在時間を表示させたのに、ずれた時間が表示されています。実行ログが記録されている時刻は 16:19 なのに、console.log() で記録されたログでは 2:19 となっています。

時間がずれている例

実は、上の例では時間がずれて表示されている原因も表示されています。
2:19 という時間に続けて表示されている

GMT-0500 (Eastern Standard Time)

がずれて表示される原因です。日本時間(GMT+900 JST)と米国東部標準時(GMT-500 EST)の時差が 14時間あるので、日本時間の 16:19 が、米国東部では 2:19 なので、このように表示されているわけです。

確認

このようにどこの地域の時間で処理しているのかを「タイムゾーン」といいます。GAS がどのタイムゾーンで処理しているのかを確認するには、次の手順で行います。

まずは、画面左側のメニューから「プロジェクトの設定」を選択します。

「プロジェクトの設定」をクリック

気付いたら、2022年 7月時点ではタイムゾーンが簡単に表示・変更できるようになっているだけでなく、適切にアカウント設定されていれば、どの情報から判断しているのかは特定していませんが、新規に作成した GAS のスクリプトのタイムゾーンが EST ではなく JST(日本標準時)に設定されるようになっています。
もし、JST になっていなければ、▼ を押して、設定しなおしてください。

2022年 7月時点の「プロジェクトの設定」→「全般設定」

これ以降は、記事を投稿した 2022年2月27日時点の内容です。以前は、こんな感じだった、ということでそのまま残しておきます。


表示された「プロジェクトの設定」の画面で、「「appsscript.json」マニフェスト ファイルをエディタで表示する」の項目をオンにします。

「プロジェクトの設定」の画面

上記の項目をオンにしたら、左側のメニューから「エディタ」を選択します。

左側のメニューから「エディタ」を選択

ここまでの操作を行うと、ファイルの部分に「コード.gs」に加えて、「appsscript.json」が表示されています。

ファイルに「appsscript.json」が追加されている

「appsscript.json」を選択すると、次のような内容が表示されます。状況によってこの内容は変わってきますが、問題なのは 2行目にある timeZone: の内容です。

「appsscript.json」の内容

この内容が

  "timeZone": "America/New_York",

となっていることで、GAS は日時を米国東部標準時(GMT-500 EST)として処理してしまっているのです。

設定変更

GAS が日本時間で処理するようにするためには、「appsscript.json」に記載されている timeZone: の内容を次のように変更しましょう。

"timeZone": "Asia/Tokyo",

このように変更した「appsscript.json」が、こんな感じです。

日本時間で処理するように変更

この状態で冒頭のプログラムを実行すると、以下のように日本時間で処理されるようになります。時間に続けて

GMT+0900 (Japan Standard Time)

と表示されています。

日本時間で処理された!

うまく日時が処理できることを確認したら、「プロジェクトの設定」で「appsscript.json」を表示しないようにオフにして構いません。一度変更しておけば、このプロジェクトについては大丈夫です。
プロジェクトごとに設定しなければならないようなので、日時を処理するようなプログラムを作成する場合には、タイムゾーンの設定について注意しましょう!

この記事が気に入ったらサポートをしてみませんか?