Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@madebyjun

Javascript初心者がGASのformatDateの使い方を解説

GASで自動返信メールを作っていた

はじめまして
プログラミングって敷居高いですよね
私は初心者中の初心者なんですが、とあるプロジェクトで

「Googleフォームで情報を集めて」
「GASでその内容を自動返信する」

ということをする必要がありました。

私自身プログラミングはほとんど経験なく、「分かりません」と言っても良かったのですが、
それはそれでなんとなく悔しいので、ネットにある情報を頼りになんとか

「Googleフォームで情報を集めて」

のところまではクリアしました。

また、

「GASでその内容を自動返信する」

というのも、m/field様のこちらのサイトを参考にし
というか丸パクリし
なんとか形になりました。

しかし、タイムスタンプがぶっきらぼうだった

これはGASというか、Google側の仕様ですし、プログラマからすればこっちのほうが汎用性があり、使いやすいのでしょうが、

Wed Aug 30 2017 16:30:35 GMT+0900 (JST)

という、一般の人からするとなんとも読みにくいフォーマットでした。
「これはいかん!ユーザーフレンドリーじゃなかばい!」と思い、リサーチをはじめました。

案外あっさり解決

時間のフォーマットを変更するにはformatDateというライブラリを使用します。
使い方はかんたん、
var hogetime = Utilities.formatDate(hogevalue,'JST','yyyy年MM月dd日');
とすればhogetimeに整形された2017年08月30日という文字列が入ります。

私の場合、時分秒もいれたかったので、
var hogetime = Utilities.formatDate(hogevalue, "JST", "yyyy'年'MM'月'dd'日' HH'時'mm'分'ss'秒'");
としました。
こっちは2017年08月30日 16時30分35秒という表記になります。
(フォーマット指定のやり方が若干違いますが、どっちでもいいみたいです。)

詳しい解説

Utilities.formatDate(Dateオブジェクト, "タイムゾーン", "フォーマット")
このように記述します。

Dateオブジェクト

これは変換する前の元の日付データです。
例えばスプレッドシートから取得する場合、range.getCellなどで取得すると
Wed Aug 30 2017 16:30:35 GMT+0900 (JST)
と言うかたちで表現されます。
まんまですね。

タイムゾーン

これには表記の揺れがあるようですが、大概GMTJSTなど、標準時を表す略称を記入すれば大丈夫です。
""(ダブルクォーテーション)で囲むのを忘れずに!

フォーマット

変換したい日付フォーマットを指定します。
個人的には
yyyy年MM月dd日(E)HH時mm分ss秒
から不必要なものを削っていくのがベストかと思いますが。
気になる方はこちらのサイトが参考になりますのでぜひ。

まとめ

ということで、今回はformatDateの解説でした。
いやー、解決してよかった。
GASは使えると仕事においてとても重宝すると思うのでみなさんもたくさん使ってください!
それでは!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What are the problem?