Softex CelwareTech Blog
Google Apps Script2026-04-15

GASでスプレッドシートの日付を安全にフォーマットする方法

GASでDate型・文字列型が混在する日付データを安全に変換する関数。コピペですぐ使えるコード付き。

GAS日付スプレッドシートフォーマット

はじめに

GAS(Google Apps Script)でスプレッドシートから日付データを取得すると、あるセルは Date 型で返ってくるのに、別のセルは文字列で返ってくる――そんな経験はありませんか?

これはセルの入力方法によって型が変わるためです。日付として認識されたセルは Date 型、テキストとして入力されたセルは String 型になります。この違いを意識せずにコードを書くと、思わぬエラーや表示崩れの原因になります。

そこで、どちらの型が来ても安全に処理できる変換関数を用意しておきましょう。

こんな場面で使えます

  • スプレッドシートから日付列を一括取得して画面に表示するとき
  • google.script.run でサーバーからクライアントにデータを渡すとき
  • 複数人が入力するシートで、日付の入力形式が統一されていないとき
  • CSVインポートしたデータで日付が文字列になっているとき

実装コード

安全な日付フォーマット関数

以下の関数をプロジェクトに追加してください。

/**
 * 日付をフォーマット(Date型でも文字列でも安全に処理)
 */
function formatDate_(value) {
  if (!value) return '';

  // Date型の場合
  if (value instanceof Date) {
    var y = value.getFullYear();
    var m = ('0' + (value.getMonth() + 1)).slice(-2);
    var d = ('0' + value.getDate()).slice(-2);
    return y + '/' + m + '/' + d;
  }

  // 文字列やその他の型の場合 → そのまま文字列化
  return String(value).trim();
}

処理の流れはシンプルです。

  1. 空値(null, undefined, "")なら空文字を返す
  2. instanceof Date で型を判定
  3. Date型なら年・月・日を取り出して "2026/04/15" 形式に整形
  4. それ以外ならそのまま文字列として返す

月の取得で getMonth() + 1 としているのは、JavaScriptの getMonth()0始まり(1月=0、12月=11)だからです。ここを忘れると月がひとつズレるので注意してください。

('0' + n).slice(-2) は、1桁の数字を「04」のようにゼロ埋めするテクニックです。

使い方

スプレッドシートからデータを取得するときに、この関数を通すだけです。

var values = sheet.getRange('A1:A10').getValues();
for (var i = 0; i < values.length; i++) {
  var dateStr = formatDate_(values[i][0]);
  // dateStr は常に "2026/04/15" 形式の文字列
}

使い方・カスタマイズ

時刻も含めたい場合

時刻情報が必要なら、Date型の分岐に getHours()getMinutes() を追加してください。

if (value instanceof Date) {
  var y = value.getFullYear();
  var m = ('0' + (value.getMonth() + 1)).slice(-2);
  var d = ('0' + value.getDate()).slice(-2);
  var h = ('0' + value.getHours()).slice(-2);
  var min = ('0' + value.getMinutes()).slice(-2);
  return y + '/' + m + '/' + d + ' ' + h + ':' + min;
}

出力フォーマットを変えたい場合

| フォーマット | コード例 | |---|---| | 2026-04-15(ハイフン区切り) | y + '-' + m + '-' + d | | 04/15(月日のみ) | m + '/' + d | | 2026年04月15日 | y + '年' + m + '月' + d + '日' |

注意点・ハマりポイント

  • google.script.run でDate型は渡せません。 サーバー→クライアント間のデータ受け渡しはJSON変換されるため、Date型は壊れます。サーバー側で必ず formatDate_ を使って文字列に変換してから返しましょう
  • getMonth()0始まり は、JavaScript初心者がハマる定番ポイントです。+ 1 を忘れずに
  • セルの表示形式が「日付」でも、値がテキストとして入力されていれば String 型で返ってきます。見た目だけでは判断できないので、この関数で両方に対応しておくのが安全です

まとめ

  • スプレッドシートの日付は Date型と文字列型が混在しうる
  • instanceof Date で型判定してから処理すれば、どちらが来ても安全
  • google.script.run でデータを返すときは、サーバー側で文字列化しておくこと

この技術で業務改善しませんか?

Excel VBA・GAS・Webアプリで業務の自動化ツールを開発しています。 「こんなことできる?」というご相談だけでもお気軽にどうぞ。

無料相談はこちら →