スキップしてメイン コンテンツに移動

GASで日付操作を極める

GASで日付操作を極める

GAS基礎とDateオブジェクト

Google Apps Script (GAS) では、JavaScript の Date オブジェクトをそのまま利用できます。Date オブジェクトは、日付と時刻を扱うための標準的な API で、GAS でのスクリプト作成時に頻繁に使用されます。まずは Date オブジェクトの基本構造を理解し、GAS での実装方法を確認しましょう。

new Date() の使い方

現在時刻を取得する最も簡単な方法は new Date() です。以下のコードは、スプレッドシートのセル A1 に現在日時を書き込む例です。

function writeNow() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var now = new Date();
  sheet.getRange('A1').setValue(now);
}

new Date() は、実行時点のローカルタイムゾーンで日時を生成します。タイムゾーンを明示的に指定したい場合は、Utilities.formatDate を併用します。

getFullYear, getMonth, getDate の活用

Date オブジェクトから年・月・日を取得するには、getFullYear()getMonth()getDate() を使用します。注意点として、getMonth() は 0 から 11 までの値を返すため、1 を足して人間が読みやすい月に変換する必要があります。

var d = new Date();
var year = d.getFullYear();      // 2026
var month = d.getMonth() + 1;    // 1 から 12
var day = d.getDate();           // 1 から 31

これらのメソッドを組み合わせて、日付の比較やフィルタリングを行うことができます。

Utilities.formatDateで日付フォーマット

GAS では Utilities.formatDate() を使って、Date オブジェクトを任意のフォーマット文字列に変換できます。フォーマット文字列は Java の SimpleDateFormat に準拠しています。

var d = new Date();
var formatted = Utilities.formatDate(d, Session.getScriptTimeZone(), 'yyyy-MM-dd HH:mm:ss');
Logger.log(formatted); // 2026-01-14 10:23:45

上記の例では、スクリプトのタイムゾーンを取得し、年-月-日 時:分:秒 の形式で文字列化しています。日付フォーマットを統一することで、レポートやログの可読性が向上します。

時間計算の実践例

日付と時刻の差分を計算する際は、Date オブジェクトのミリ秒単位の値を利用します。以下は、2 つの日付間の差を日数で取得する例です。

function daysBetween(start, end) {
  var msPerDay = 24 * 60 * 60 * 1000;
  var diff = Math.abs(end.getTime() - start.getTime());
  return Math.floor(diff / msPerDay);
}

var start = new Date('2026-01-01');
var end = new Date('2026-01-14');
Logger.log(daysBetween(start, end)); // 13

時間計算は、スケジュール管理や期限チェックなど、GAS で頻繁に必要とされる機能です。Date オブジェクトと Utilities.formatDate を組み合わせることで、柔軟かつ正確な日付処理が可能になります。

この記事はAIによって作成されました。

コメント