「googleapps 月の足し算」
という検索でこのサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
何らかの日付データがあるときに、GAS(Google Apps Script)を使って、nか月後の日付を求めるにはどうすればいいのかを探している方による検索でしょう。
この手の日付計算は、まず日付から、年・月・日を表す数値を取得して、月に足し算を行ってから日付データに戻すというのが基本的な考え方です。
月の加算を行うサンプルスクリプト
Googleスプレッドシート上の日付データの入力されているセルを選択しておいてから、以下のスクリプトを実行すると、その右隣のセルに2か月後の日付が入力されます。
var bk = SpreadsheetApp.getActiveSpreadsheet();
var sh = bk.getActiveSheet();
var rng = sh.getActiveCell();
var date = new Date(rng.getValue());
var y = date.getFullYear();
var m = date.getMonth();
var d = date.getDate();
rng.offset(0, 1).setValue(new Date(y, m + 2, d));
}最後の行、
rng.offset(0, 1).setValue(new Date(y, m + 2, d));
を、例えば、
rng.offset(0, 1).setValue(new Date(y, m + 3, d));
に変更すれば、アクティブセルの右隣のセルに、3か月後の日付が入力されます。
サンプルスクリプトの解説
アクティブなセルの値をGASのRange.getValue()メソッドで取得して、その値を元にJavaScriptのDateクラスのインスタンスを作成します。
var date = new Date(rng.getValue());
このDateが、GASのオブジェクトではなく、JavaScriptのオブジェクトであるというところが、重要なポイントです。
DateオブジェクトのgetFullYear()メソッドで年を表す数値を、
var y = date.getFullYear();
DateオブジェクトのgetMonth()メソッドで月を表す数値を、
var m = date.getMonth();
DateオブジェクトのgetDate()メソッドで日を表す数値をそれぞれ取得して、
var d = date.getDate();
月を表す数値に「+ 2」した日付(new Date(y, m + 2, d))を、アクティブなセルの右隣のセル(rng.offset(0, 1))に、入力(.setValue)しています。
rng.offset(0, 1).setValue(new Date(y, m + 2, d));
- Newer:VBAで不等号「<>」の意味は?
- Older:ListObject・テーブルの列を削除するExcelマクロ
Home » Googleスプレッドシートの使い方 » Google Apps Scriptで月の加算を行う