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 を組み合わせることで、柔軟かつ正確な日付処理が可能になります。
コメント
コメントを投稿