みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps Scriptで日付&時刻の便利ライブラリMoment.jsを使う方法についてお伝えしています。
前回はこちらの記事。
Moment.jsとは何か、またGoogle Apps Scriptでのライブラリ追加方法についてお伝えしました。
さて、今回から本格的に色々なメソッドを紹介していきたいと思います。
まずお伝えするのは、書式についてです。
Google Apps ScriptではUtilities.formatDateというGoogleさんが用意してくれているメソッドがあるのですが、Moment.jsではより簡潔に書式の指定をすることができるんですね。
ということで、Google Apps Script版Moment.jsで日付と時刻の書式フォーマットを指定するformatメソッドの使い方をお伝えしてまいります。
Google Apps Scriptでの日付と時刻のフォーマットの方法
例えば、Dateオブジェクトがありまして、その日時を以下のように表示したいとします。
日本人ですからね。そういうふうに出力したいときもあるのです。
JavaScript標準でフォーマット
これをJavaScript標準のDateオブジェクトでやろうとすると
function logByDate() { const d = new Date('2020/04/12 15:25:00'); console.log( d.getFullYear() + '年' + (d.getMonth() + 1) + '月' + d.getDate() + '日' + ' ' + d.getHours() + '時' + d.getMinutes() + '分' ); }
…こんなんなっちゃいます。マジ面倒です。
Utilities.formatDateメソッドを使う
しかし、そこはさすがのGoogleさん。Google Apps ScriptにはUtilities.formatDateという素敵なメソッドがありまして、それを使えば以下のように簡単に書けちゃうんですね。
function logByUtilities() { const d = new Date('2020/04/12 15:25:00' ); console.log(Utilities.formatDate(d, 'JST', 'yyyy年M月d日 H時m分')); }
Utilities.formatDateメソッドの使い方は以下記事に紹介しています。
これでもいいのですが、欲を言うと二つほど注文が。
- Google Apps Scriptでしか使えないのが気にくわない
- ちょっと長い
ワガママのように見えますか?
いえいえ。JavaScriptは色々なところで使える素敵な言語ということで、他でも使える表現のほうが望ましいですよね。
Google Apps関連のAPIであれば専用でも仕方がありませんが、日付のフォーマットも専用って…ということです。
あと、ちょっと長いですね。タイムゾーン…使う場合は便利なんでしょうが、使わないときも多いですし。
ということで、この欲望に応えるべく、Moment.jsを使ってみましょう。
Moment.jsのformatで日付と時刻のフォーマットを指定
では、Moment.jsでの日時フォーマットの指定方法です。formatメソッドを使います。
書き方は
となります。
前述の例では、以下のようにすればいいですね。
function logByMoment() { const m = Moment.moment('2020/04/12 15:25:00'); console.log(m.format('YYYY年M月D日 H時m分')); }
これでちょっぴり短くなります。
Moment.jsでformatすれば関数いらず
例えば、以下の記事ではGoogleカレンダーを操作しているので、何回もUtilities.formatDateを使うケースがあったんですね。
毎回、Utilities.formatDateすると、表記がゴチャつくので、独自の関数を用意したりしていました。
まあ、それでもいいっちゃいいのですが。
ただ、Moment.jsのformatメソッドを使うと、以下のように簡潔に記述することができますね。
function formatMoment() { const m = Moment.moment(); console.log(m.format('hh:mm')); }
Moment.jsでのフォーマットの指定方法
以下、Moment.jsの日時フォーマット指定の際の文字要素とその内容を表にしておきますね。
文字要素 | 内容 |
---|---|
M, MM | 月の数字(1 – 12) |
MMM, MMMM | 月の名前 |
D, DD | 日 |
d, dd, ddd, dddd | 曜日 |
YY | 2ケタの年数 |
YYYY | 4ケタの年数 |
a, A | AM/PM |
H, HH | 時間(24時制) |
h, hh | 時間(12時制) |
m, mm | 分 |
s, ss | 秒 |
SSS | ミリ秒 |
Utilities.formatDateとMoment.jsとで文字要素の指定が異なる
ちょっと聡明な読者はお気づきかと思いますが、Utilities.formatDateの場合と、Moment.jsの場合とで、書式を表現する文字要素が異なっているんですね。
年のトークンが
- Moment.js:YYYY
- Utilities.formatDate:yyyy
日のトークンが
- Moment.js:d
- Utilities.formatDate:D
といったように別の文字が当てられています。まあ、仕方がないですね。
ですから、どちらか一方だけを使い続けるということになりますね。
まとめ
以上、Moment.jsのformatメソッドによる日時フォーマットの指定方法についてお伝えしました。
スマートに指定できて気持ちがいいですよね。
Utilities.formatDateには今までお世話になりました。感謝。
さて、Moment.jsですが、まだまだこんなもんではありません。他にも素晴らしい使い方がたくさんあります。
次回はmomentオブジェクトから各要素を取り出す方法、セットする方法についてお伝えしますね。
どうぞお楽しみに!
連載目次:Google Apps ScriptでMoment.jsを使う
Google Apps Scriptでよく取り扱う日付と時刻。しかし、JavaScriptの標準Dateオブジェクトは扱いがなかなか難しいんですよね。その日時の操作をとっても簡単にすることができるライブラリ「Moment.js」の使い方について、解説をしていきます。- 日付&時刻の便利ライブラリ「Moment.js」をGoogle Apps Scriptで使う方法
- Google Apps ScriptでもMoment.jsで日付&時刻の書式フォーマットを簡単に指定
- Google Apps ScriptのMoment.jsで日時の各要素をGetとSetする方法
- GAS版Moment.jsライブラリで超簡単に日時の比較をする方法
- GASでMoment.jsライブラリを使って簡単に日時の計算をする方法
- GAS版Moment.jsの破壊的な日時計算メソッドの注意点とcloneメソッドによる回避
- GASでMoment.jsライブラリを使って超スマートに日時の差をとる方法
- Google Apps Scriptを使って80歳までの残り時間をChatworkに日々通知する