MENU

【GAS】Utilities.formatDateの使い方|日付を好きな形式に変換(JST対応・コピペOK)

GASで日付をそのままセルやログに出すと、Sat Feb 11 2026 00:00:00 GMT+0900 のような読みにくい文字列になってしまいます。これを「2026/02/11」や「2月11日(水)」のように好きな形に変換するのが Utilities.formatDate です。この記事では、コピペで動くコード例とつまずきポイントを、初めての方にも分かるように一気に解説します。

この記事のポイント

  • Utilities.formatDate(日付, タイムゾーン, フォーマット) の3つを渡すだけで、日付を好きな文字列にできる
  • 日本時間にするにはタイムゾーンに "Asia/Tokyo" を指定(ここを忘れると9時間ズレる)
  • 曜日を日本語で出すときは EEE ではなく配列を使うのが確実
  • ファイル名・日報・通知メッセージなど、実務の「日付の自動整形」がこれ一行で片づく
目次

Utilities.formatDateとは?まずは結論から

Utilities.formatDate は、日付を指定したフォーマットの文字列に変換するGAS標準の関数です。基本形はこれだけです。

function basicFormat() {
  // 今の日付を「2026/02/11」の形にする
  const formatted = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd");
  Logger.log(formatted); // 例: 2026/02/11
}

渡すものは3つです。

  1. 日付:変換したい Date オブジェクト(new Date() で「今」になります)
  2. タイムゾーン:"Asia/Tokyo" を入れると日本時間になります
  3. フォーマット:"yyyy/MM/dd" のように、出したい形を記号で指定します

まずはこの形を覚えれば、あとは3つ目のフォーマットを変えるだけで自由自在です。

3つの引数を1つずつ理解する

Utilities.formatDate でつまずく原因は、ほぼこの3つの引数の理解不足です。順番に見ていきます。

1. 日付(Dateオブジェクト)

変換のもとになる日付です。「今」を使うなら new Date()、特定の日付を使うなら new Date(2026, 1, 11) のように書きます。

注意:new Date() の月は 0始まり(1月が0、2月が1)です。これはGAS(JavaScript)共通のクセで、ここでよく事故ります。月まわりの落とし穴は、こちらで詳しくまとめています。

関連記事:GASの日付操作 完全ガイド(Dateの罠とよく使うパターン)

2. タイムゾーン

「どの地域の時刻として出すか」の指定です。日本で使うなら、ほぼ "Asia/Tokyo" で固定でOKです。

注意:一番多いミスがここです。タイムゾーンを "UTC" にしたり、間違った値を入れると、表示が9時間ズレます。

function timezoneCheck() {
  const now = new Date();
  // NG: UTC(世界標準時)だと9時間前の時刻になる
  Logger.log(Utilities.formatDate(now, "UTC", "yyyy/MM/dd HH:mm"));
  // OK: 日本時間(こちらが正解)
  Logger.log(Utilities.formatDate(now, "Asia/Tokyo", "yyyy/MM/dd HH:mm"));
}

「日付は合っているのに時間だけ変」「日付が1日前になる」ときは、まずここを疑ってください。

3. フォーマット(出したい形)

yyyy や MM といった記号を組み合わせて、出力の形を決めます。記号はそのまま数字に置き換わり、/ や : や日本語はそのまま文字として出ます。

よく使うフォーマット記号一覧

覚えるのはこれだけで十分です。大文字・小文字で意味が変わる点に注意してください(例:MM=月、mm=分)。

記号 意味 出力例
yyyy 西暦4桁 2026
yy 西暦2桁 26
MM 月(2桁) 02
M 月 2
dd 日(2桁) 11
d 日 11
HH 時(24時間) 09 / 21
hh 時(12時間) 09
mm 分 05
ss 秒 30
EEE 曜日(英語) Wed

注意:MM(月)と mm(分)はよく取り違えます。「分」は小文字、と覚えてください。

コピペで動く実例3パターン

そのまま貼り付けて実行できます。エディタに貼って実行 → 実行ログ(Ctrl + Enter)で結果を確認してください。

例1:基本の年月日を出す

function example1() {
  const today = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd");
  Logger.log(today); // 例: 2026/02/11
}

例2:時刻つきで日時をまとめて出す

function example2() {
  const datetime = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss");
  Logger.log(datetime); // 例: 2026/02/11 21:05:30
}

通知メッセージやログに「いつ実行したか」を残したいときの定番です。

例3:曜日つき・日本語で出す

EEE は曜日を出せますが、環境によって 英語(Wed)になることがあります。日本語の曜日を確実に出すなら、配列を使うのが鉄板です。

function example3() {
  const now = new Date();
  const week = ["日", "月", "火", "水", "木", "金", "土"];
  // getDay() は 0=日曜 〜 6=土曜
  const youbi = week[now.getDay()];
  const result = Utilities.formatDate(now, "Asia/Tokyo", "M月d日") + "(" + youbi + ")";
  Logger.log(result); // 例: 2月11日(水)
}

このパターンを覚えておくと、日本語の日付表記で困らなくなります。

実務での使いどころ

私自身、毎日の日報ファイルを 日報_20260211 のように日付つきの名前で自動生成していますが、これも formatDate 一行で実現できます。

セルに書き込む

function writeToSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const stamp = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm");
  sheet.getRange("A1").setValue(stamp); // A1に「2026/02/11 21:05」が入る
}

ファイル名に日付を付ける

function makeDatedName() {
  const ymd = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyyMMdd");
  const fileName = "日報_" + ymd; // 例: 日報_20260211
  Logger.log(fileName);
}

「請求書PDFを日付つきで保存」「シートに処理日時を記録」など、業務自動化ではほぼ毎回登場する書き方です。

よくあるつまずきと直し方

時間が9時間ズレる → タイムゾーンを "Asia/Tokyo" にしているか確認("UTC" になっていませんか?)。

「パラメータが合いません」というエラー → 第1引数が Date オブジェクトになっていない可能性大。文字列や数値ではなく new Date() などを渡してください。

月が「2」ではなく「02」で出る/その逆 → MM(2桁)と M(1桁)の違いです。記号を変えれば直ります。

曜日が英語で出る → 上の「例3」の配列パターンに切り替えてください。

ヒント:困ったら、まず Logger.log() で出力を確認するのが最短です。

この記事のポイント(まとめ)

ポイント 説明
基本形 Utilities.formatDate(日付, "Asia/Tokyo", "yyyy/MM/dd")
日本時間 タイムゾーンは "Asia/Tokyo"。忘れると9時間ズレる
月と分 MM=月、mm=分。取り違えに注意
日本語の曜日 EEE ではなく配列 ["日","月",…][getDay()] が確実
実務 ファイル名・記録日時・通知メッセージの自動整形に必須

次のステップ

日付を「文字列」にできたら、次は取得・書き込みや日付の計算に進むと、できることが一気に広がります。

まずは「例1」をそのままコピーして動かしてみてください。出力が確認できれば、あとはフォーマットを変えるだけで、日付を自由に整形できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次