GASで、日時のスクリプトを書いて設定をした際、現在の日時と合わない。。。という事がありました。何故か分からず、4時間ぐらい四苦八苦してしまいましたので、同じ様なことで、困ってらっしゃる方もいらうかと思い、解決方法を記載します。
目次
出来事
営業のスケジュールを、スプレッドシートに全て記載し、それをカレンダーに反映させる仕組みを作成する為に、現在の日時を取得するスクリプトを書いていたら、全然、正しい現在日時を取得できないという事象が発生しました。
スクリプト内容は下記の通り:
// 今の日付と時間を取得するプログラム
function Getnow() {
let date = new Date();
Logger.log(date);
let y = date.getFullYear();
let mon = date.getMonth() + 1;
let day = date.getDate();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
let now = y+"/"+mon+"/"+day+" "+hours+":"+minutes+":"+seconds;
Logger.log(now);
}
上記を実行すると下記の「実行ログ」が出てきてしまいます。
現在時間と13時間も時間差?
現在時間は、16時5分4秒なので、実行ログとは13時間の差が出てしまいました。初めは、スクリプトが間違っているのかと思い、いろいろ書き直してみたのですが、特に間違っているところも無く、、、仕方がないので、「13時間遅い表示がでるのであれば、スクリプトに13時間追加してあげれば、正しく出るようになるのでは?」とも考え、その様なスクリプトも考えたのですが、よくよく「実行ログ」を見ると『GMT-04:00』という表記があり、これはどういう意味なのか(WEBで)調べていく内に、「グリニッジ標準時」「タイムゾーン」の存在を知りました。
「グリニッジ標準時」とは?「タイムゾーン」とは?
「グリニッジ標準時」とは、イギリスにあるグリニッジ天文台での平均太陽時のことで、グリニッジ天文台は経度0度にあり、ここを基準として世界各国の標準時(タイムゾーン)を決めているそうです。日本は、経度135度となるため、グリニッジ標準時から9時間の差があります。そのため、グリニッジ標準時での日本時間の表現は、「GMT+09:00」となるとのこと。
では、「GMT-04:00」⇒「GMT+09:00」にするには?
現在の実行ログには、「GMT-04:00」という表示になっているので、そこが「GMT+09:00」になってくれれば良いことになります。解決方法は、タイムゾーンの変更で解決できそうです。
解決方法:タイムゾーンの変更方法
タイムゾーンを変更するには、まず、
1.スクリプトエディタの「プロジェクトの設定」(①)をクリック。
2.「全般設定」の中の「(GMT-04:00) アメリカ東部時間 – ニューヨーク」を「(GMT+09:00) 日本標準時 – 東京」(②)に変更。
※この時、他の項目を変更しまうと上手く動かなくなってしまう可能性もあるので、他の項目は変更しないようにしましょう。
3.上記まで行ったら、エディタ(③)をクリック
4.スクリプトを再実行してみましょう。
まとめ
如何でしたでしょうか?
知っていれば、もしくは、一度経験すれば、どうということは無いのですが、プログラム初心者だと、何がダメなのかが分からず、「スクリプトを間違えた?」「何か設定ミス?」とか、いろいろと堂々巡りして、時間を浪費してしまうこともあるかもしれません。。。(私は4時間費やしました。。。)
スクリプトを書く際は(特に日時のスクリプト)、タイムゾーンをまず、チェックしましょう!
それでは、楽しいGASで、業務効率化を図っていきましょう!