日付したい(Date

 1const now = new Date();
 2Logger.log(now);
 3// Mon Nov 11 2024 10:37:03 GMT+0900 (Japan Standard Time)
 4
 5Logger.log(now.toISOString());
 6// 2024-11-11T01:37:03.620Z
 7
 8Logger.log(now.toLocaleString());
 9// 11/11/2024, 10:37:03 AM
10
11Logger.log(now.toLocaleString("ja-JP", {timeZone: "JST"}));
12// 2024/11/11 10:37:03

JavaScriptのDateクラスで日付オブジェクトを操作できます。

注釈

タイムゾーンはGASのプロジェクト設定(全般設定)で変更できます。

現在時刻したい(new Date

1const now = new Date();
2console.log(now);
3// Mon Nov 11 2024 10:23:23 GMT+0900 (Japan Standard Time)
4console.log(now.toISOString());
5// 2024-11-11T01:23:23.137Z

引数なしで生成すると現在時刻を取得できます。

1const year = new Date("2024");
2// 2024-01-01T00:00:00.000Z
3
4const date = new Date("2024-11-11");
5// 2024-11-11T00:00:00.000Z
6
7const datetime = new Date("2024-11-11 12:34:56");
8// 2024-11-11T03:34:56.000Z

引数に日時形式の文字列を与えて、Dateオブジェクトに変換できます。

 1// TZ=+08:00に設定
 2const now = new Date("2024-11-11 12:34:56.789+08:00");
 3
 4
 5console.log(now);
 6// Mon Nov 11 2024 13:34:56 GMT+0900 (Japan Standard Time)
 7// ↑GASプロジェクトのTZ設定(Asia/Tokyo)に変換されている
 8
 9console.log(now.toISOString());
10// 2024-11-11T04:34:56.789Z
11// ↑UTC+00:00に変換されている

タイムゾーンを明示した形式の場合、 GASプロジェクトの日時設定や、 UTC時刻に自動で変換されます。

表示形式したい(toLocaleString

 1const now = new Date();
 2const options = {
 3    year: "numeric",    // [2-digit, numeric]
 4    month: "2-digit",   // [2-digit, numeric, long, short]
 5    day: "2-digit",     // [2-digit, numeric]
 6    hour: "2-digit",    // [2-digit, numeric]
 7    minute: "2-digit",  // [2-digit, numeric]
 8    second: "2-digit",  // [2-digit, numeric]
 9    fractionalSecondDigits: 3,  // [0, 1, 2, 3]
10    hour12: false,  // [false, true]
11    timeZone: "Asia/Tokyo",  // [UTC, Asia/Tokyo, ...]
12    timeZoneName: "shortOffset",  // [short, long, longOffset, shortOffset, longGeneric, shortGeneric]
13    weekday: "long",  // [short, long]
14}
15console.log(now.toLocaleString("ja-JP", options));
16// 2024/11/11月曜日 10時56分32.590秒 GMT+9

DateオブジェクトのtoLocaleStringで、ロケールに合わせた表示形式に変更できます。 ロケールはja-Jp-u-ca-japanese-hc-h12のような形式で、 言語のユニコード拡張(ja-Jp-u)や 和暦(ca-japanese)、 12時間制(hc-h12)などのオプションを追加できます。

ISO8601したい(Utilities.formatDate

1const now = new Date();
2
3// Utilities.formatDate(日付, "タイムゾーン", "表示形式");
4const date = Utilities.formatDate(now, "Asia/Tokyo", "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
5Logger.info(date);

GASのUtilities.formatDateメソッドで、任意の表示形式に変更できます。 上記サンプルでは、現在時刻を日本の時刻にローカライズして、ISO8601形式で出力しています。

指定子

表示内容

G

Era designator

Text

AD

yyyy

年(4桁)

Year

2024 / 24

MM

月(2桁)

Month

01 - 12

dd

日(2桁)

Number

01 - 31

hh

時(2桁)

Number

1 - 24

mm

分(2桁)

Number

00 - 59

ss

秒(2桁)

Number

00 - 59

SSS

ミリ秒(3桁)

Number

000 - 999

E

曜日

Text

Tuesday; Tue

z

タイムゾーン

General time zone

JST

Z

タイムゾーン

RFC 822 time zone

+0900

XX

タイムゾーン

ISO 8601 time zone

+0900

週末したい

 1// 週末かどうか判定する
 2//
 3// @param {Date} date - 日付オブジェクト
 4function isHoliday(date) {
 5    // 曜日を取得
 6    const day = date.getDay();
 7
 8    // 0: 日曜日 ... 6:土曜日
 9    if (day === 0 || day === 6) {
10        return true;
11    } else {
12        return false;
13    };
14};

getDayで曜日を取得できます。

月初/月末したい

 1const d1 = new Date();
 2d1.setDate(1);
 3d1.setHours(0);
 4d1.setMinutes(0);
 5d1.setSeconds(0);
 6//     2024-11-13 12:34:56
 7// ==> 2024-11-01 00:00:00
 8
 9const d2 = new Date();
10d2.setMonth(d2.getMonth() + 1);
11d2.setDate(1);
12d2.setHours(0);
13d2.setMinutes(0);
14d2.setSeconds(0);
15//     2024-11-13 12:34:56
16// ==> 2024-12-01 00:00:00

現在日時を基準に、月初と月末を取得できます。 カレンダーから毎月のイベントを取得したい場合に使えます。

リファレンス