【GAS】Google Apps Scriptの日時コードまとめ(日時取得・文字変換)

こんにちは。
ITエンジニアのアセロラです。

GASって、無料で使えてスケジュール設定もできるので、とても便利ですよね。

今回はそんなGASのスケジュール処理によく登場する「日付型」や「日付関数」にまつわるコードをまとめていきます。

目次から必要なコードを探してみてください。

日付を取得する

現在の日時を取得:new Date()

today = new Date();

アセロラ

new Date()で宣言するとその日時がdate型で手に入ります。
文字列に変換したいときは「日付→文字列 Utilities.formatDate()」を参考に。

昨日の日付を取得

yesterday = new Date();
yesterday.setDate(yesterday.getDate()-1);

アセロラ

まず今日の日付を new Date()で宣言して、その日付を setDate で 1つ前の日に設定します。
翌日にするには逆に+1してあげればOKです。

指定の日付を取得

date = new Date('2022/01/01'); //日付

datetime = new Date('2022/01/01 00:00:00'); //時刻も指定する場合

アセロラ

文字ではなく数値型で、new Date(2022, 1, 1) とする方法もあります。

年月日や曜日を取得する

年、月、日、時、分、秒を取得:getFullYear()など

today = new Date();

console.log(today.getFullYear()); 
console.log(today.getMonth()+1);
console.log(today.getDate());
console.log(today.getHours());
console.log(today.getMinutes());
console.log(today.getSeconds());

アセロラ

getFullYeay()とgetYear()は別物なので注意。後者は1900年から数えた年数が返ってきます。
getMonth()は0〜11の数で返ってくる(10月なら9となる)ので、+1すると良いでしょう。

曜日を取得:getDate()

today = new Date();

weekdayNumber = today.getDay();

アセロラ

getDate()とややこしいですが、関数名はgetDay()です。
日曜が0で土曜が6となる、0〜6の数値を返却します。

おまけ:曜日を日本語で取得する

// 日〜土の日本語表記リストを用意する
const weekdayJp = ["日", "月", "火", "水", "木", "金", "土"];

today = new Date();
console.log(weekdayJp[today.getDay()]);

アセロラ

英語の曜日名(MonとかSun)ではなく日本語の曜日名にしたい場合は、こういう工夫が必要です。

おまけ:2022年1月1日(土)みたいな文字列にしたい

const weekdayJp = ["日", "月", "火", "水", "木", "金", "土"];

today = new Date();

todayString = Utilities.formatDate(today, 'JST', 'yyyy年M月d日');
weekdayString = '(' + weekdayJp[today.getDay()] + ')';

console.log(todayString+weekdayString);

アセロラ

年月日の形式で出力するには、Utilities.formatDate()を利用します。
曜日のカッコ表記のために、「(」と曜日と「)」で文字列をつなげています。

日付を文字列に・文字列を日付に変換する

日付→文字列:Utilities.formatDate()

today = new Date();

todayString = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd HH:mm:ss');

アセロラ

Utilitiesはデフォルトで呼び出せるライブラリです。
‘yyyy-MM-dd HH:mm:ss’の部分で年月日を出力指定してます。
参考 GAS公式 formatDate

おまけ:いろいろな日時指定フォーマット(yyyy-MM-dd HH:mm:ss 以外)

yyyy-MM-dd HH:mm:ss以外に使いそうなものをピックアップしました。

指定子意味
w1年のうち第何周か27
W月のうち第何周か2
E曜日名(英語)TuesdayTue
u曜日番号 (1 = Monday, …, 7 = Sunday)1
aAMまたはPMPM
K時(AM/PM表記)0
Sミリ秒978
zタイムゾーン(詳しい)Pacific Standard TimePSTGMT-08:00
Zタイムゾーン(時分4桁のみ)-0800

アセロラ

フォーマット指定は「Java SE SimpleDateFormat」の仕様に準ずるそうですね。
参考 日時指定フォーマットの一覧

文字列→日付:new Date()で指定すればOK

date = new Date('2022-01-01 00:00:00');

date = new Date('2022/01/01 00:00:00');

アセロラ

年月日はハイフンとかスラッシュ区切りでOKです。
案外いろいろな文字列を日付に変えてくれるので、一回やってみてだめなら上記の様な形式に揃えましょう。

タイムゾーンは今いる地域をもとに設定されるようです。
日本であれば東京時間(GMT+0900)で扱われます。

まとめ

参考になる書き方はありましたか?

GASはドキュメントが少なくて調べごとに苦戦する印象なので、思いついたネタは記事にしていこうかなと思ってます。

この記事のまとめ
  1. new Date()で現在時刻をdateオブジェクトで取得できる
  2. 昨日や翌日にするにはsetDate()で日付を調整する
  3. Utilities.formatDate()で好きなフォーマットで文字列に変換できる

ではまた!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA