Google Apps Script

【GAS】月末最終日付はsetDate(0)で簡単に取得できる!

こんにちは、もりです!

日付処理でなにかと必要な「月末日」、月によって日数が異なるので、算出にひと工夫必要ですね。

書き方はいろいろあると思いますが、「GASで月末日付を求める最も簡単な方法」を紹介します。

 

(参考)「31日まで無い月」の覚え方に「西向く侍(士)」があります。

に・し・む・く・士 → 2,4,6,9,11月です。

Dateオブジェクトの「日」を設定するsetDateメソッド

日付を扱う「Dateオブジェクト」setDateメソッドを使います。

Dateオブジェクト.setDate(引数)

  • 引数:「日」を表す整数値
  • 戻り値:Dateオブジェクト
  • 説明:Dateオブジェクトに「現在設定されている月」から始まる「日」を設定する
  • JavaScript公式リファレンスはこちら

Dateオブジェクトに「現在設定されている月」から始まる「日」を設定する

サンプルコードです。

 

Dateオブジェクトに「現在設定されている月」から始まる「日」を設定する、を分解します。

・Dateオブジェクト(変数date)に「現在設定されている月」は【4月】
・【4月】から始まる【5】日を設定→「4月5日」

setDateメソッドの特徴

setDateメソッドには、こんな特徴があります。

引数(整数値)がその月の日付の範囲外の場合、その値に応じてDateオブジェクトが更新されます。

例えば、引数に「0」を与えた場合、前月の最終日に設定されます。

 

「日」を設定するなら、引数に指定できるのは「1~31(30日までの月は30)」の間だけ?と思ってしまいますが、setDateメソッドの引数には「0」「マイナス値」「32以上」も指定できます。

 

この仕組みを利用すると、前月末日付を簡単に取得することができます。

前月末日付を取得する

まずは、前月の最終日を取得する方法です。「2020/4/8」にスクリプトを実行した場合、「2020/3/31」が取得できればOKです。

DateオブジェクトのsetDateメソッドの引数に「0」を与えます。

 

※1月でも、特別な処理は不要です。2020/01/xxに実行すると、2019/12/31が取得できます。

前月末のn日前を求める

setDateメソッドの仕組みを利用して、月末日付の前日(-1日)、前々日(-2日)を求めることもできます。

今月末日付を取得する

次に「今月末日付」です。前項の「前月末日付を取得する」を利用して、下記の2ステップで求めます。

  1. 「今日日付」の「1ヶ月後の日付」を取得する
  2. ①の日付の「前月末日付」を取得する

(例)2020/04/08【今日】→2020/05/08【1ヶ月後】→2020/04/30【前月末】

ちなみに、11行目の引数を date.setDate(-1) にすると、2020/04/29 が取得できます。

 

以上です!月末日付の作成にぜひ使ってみてくださいね。

【GAS】今日から「Nヶ月後の日付」「N日後の日付」を求めるDateオブジェクトを使用して「未来日付」を算出する方法を紹介しています。今日の3ヶ月後は?90日後は?がわかります。...