【GAS】Google Formの自動返信メールで時刻が「Sat Dec 30 1899」と表示されてしまう場合の対応策(簡単)
1/162023
カテゴリー:プログラミング
お問い合わせ、セミナー受付等はGoogle Formが便利
ホームページのお問い合わせ、
セミナー受付に
「Google Form」を利用しています。
(色々試してみた結果、Google Formに戻ってきました)
Google Formを利用するとSpread sheetで管理できる、
GAS(Google Apps Script)を利用できるので便利です。
Google Formには自動返信機能がないため、
GASで実装しています。やり方は↓の記事で解説しています。
オンラインセミナーの受付はGoogle Form。GAS(Google Apps Script)を活用して自動返信する方法
自動返信メールの時刻が「Sat Dec 30 1899」に!
しかし最近(かなり気づくのが遅い)、
自動返信メールの時刻が変なことに気づきました。
「Sat Dec 30 1899」となっているのです!
これは、スプレッドシートの日時計算の起点が1899年12月30日になっているからのようです。
時刻自体は合っているので伝わらなくはないですがこれを見て
「ん!?」と受け取った方がいたら申し訳ない。
なんとか表示を直すことにしました。
時刻の表示を正しくするための手順
GAS上のTime Zoneを直したり、
formatDate関数を使ったり、
色々やってみたのですが
すごく簡単なやり方で解決しました。
それは、時刻の値を取得するときに
「getValue」関数を使うのではなく、「getDisplayValue」関数を使うということです。
- getValue関数・・・データ型をそのまま引き継いで値を取得する。
- getDisplayValue関数・・・表示されている形式のまま値を取得する。
という違いがあります。
つまり、下記のように12:00と入力された値は年とかつけず、そのまま「12:00」として取得してくれます。
スプレッドシートの項目を取得するコード(一部のみ記載)を、
変更前
//スプレッドシートの入力値
var value = range.getCell(row, i).getValue();
変更後:
//スプレッドシートの入力値
var value = range.getCell(row, i).getDisplayValue();
と直していただくだけで大丈夫です。
試しに自動返信メールを送ってみると、
きちんと時刻が表示されていました。
(GMTとかJapan Standard Timeとか要らない表示もなくなりました)
GASの時刻表示がうまくいかない!
という方は是非「getDisplayValue」関数、ご活用ください。
まとめ
GASで作ったGoogle Formの自動返信メールで時刻が「Sat Dec 30 1899」と表示されてしまう場合の対応策を
解説しました。
こういうことって解決策が見つかればすぐにできるのですが
それまでに時間がかかりますね・・(半日かかりました)
同じように困っている人の助けになればいいなと思ってます。
編集後記
金曜日は、出版社の方と雑誌執筆について打ち合わせ。
週末は、Wordpressのメンテナンスなどを。
PHPのバージョンが古かったり、プラグインの更新ができていなかったりと
(今日書いた記事の問題も発見)
メンテは定期的にやらなきゃ、とあらためて感じました。
最近のあたらしいこと
下北の宿予約