【Google Apps Script】シートから一致する日付をしぼり込む方法②

記事
IT・テクノロジー
今回はDateオブジェクトのgetTime()メソッドについて解説していきます。
前回の記事で、getTime()メソッドは「とある起点からの経過ミリ秒を取得するメソッド」だと書きました。
もし前回の記事をご覧になりたければ、こちらをクリックしてくださいね。

そこのところを詳しく見ていきましょう!
まず前回同様に、変数todayに今日の日時を格納してみましょう。ちなみにこの記事を書いている現在、日にちは2月2日です。
const today = new Date();
現在日時の取得はこれでできるんでしたね。ログを見てみましょう。
console.log(today);
2-1.png

無事、現在時刻が格納できていますね。
では
console.log(today.getTime());
としてみるとログにはなにが表示されるでしょうか??
function testDateFunction(){
  const today = new Date();
  console.log(today);
  console.log(today.getTime());
}
2-2.png

なんだか謎の数字「1612194136072」が表示されましたね(;'∀')
実はこれが、「とある起点からの経過ミリ秒」の数字です。とんでもなく大きな数字のように思えますが、ミリ秒であらわされた数字なんですね~。
ではここで気になるのが、「とある起点」っていうのはいつのことよ?? ということだと思います。
ズバリ答えを言うと、それは1970年1月1日午前0時0分0秒(UTC)のことです!
これはUNIX時間といって、コンピューターで時刻を表現する際の、基準になる時刻として使われてものなんですね。
(蛇足ですが1970年1月1日午前0時を起点とするのがUNIXシリアル値で、他に1899年12月30日午前0時(VBAでは1900年1月1日午前0時)を起点とするシリアル値があったり、、、とにかくややこしい汗)

……ともかく1612194136072という数字は、1970年1月1日午前0時から数えたミリ秒という意味なのです。1970年1月1日午前0時から1612194136072ミリ秒数えた時刻がtodayだということですね。

では次にこちら↓のシートのA26セルの値をgetTime()メソッドで見てみるとどうなるでしょう?
2-3.png

前回の記事からちょっと時間が経ってしまったので、A26セルの日付だけ2月2日に変更しておきました(;'∀')
ちなみに日付のとなりのセルが09:00となっていますが、A26セルの時刻とはまた別ですので気にしないでください。
const cell = ss.getRange('A26').getValue();
console.log(cell);
console.log(cell.getTime());
2-4.png

少し違っていますね。やけにキリがいいような。。。何の違いなんでしょうか?
変数todayもcellも、同じ2021年2月2日のDateオブジェクトが格納されているはず、、、
ハッ!Σ(゚□゚;)!!
もしや日付は同じでも、何時何分何秒(&何ミリ秒)という時刻が違っているからでは……!?
では前回と同様に、変数todayの時刻ををsetHours()で午前0時に変更し、そのあとでtodayとcellを比較してみましょう!
function testDateFunction(){
  const ss = SpreadsheetApp.getActiveSheet();
  const cell = ss.getRange('A26').getValue();
  const today = new Date();  today.setHours(0,0,0,0);

  console.log(cell.getTime());
  console.log(today.getTime() == cell.getTime());
}
2-5.png

やったー!一致したー!!
これでようやく、「2つの日にちを比較する」という段階まで到達することができました(*^_^*)
まとめると、

・日付の比較をするならDateオブジェクトの型のまま比較しない
・getTime()メソッドを使う
・〇時〇分〇秒〇ミリ秒の部分は、setHours()メソッドでそろえておく。

ということになります。

これができれば「同じ日付の行だけを抽出する」「〇月〇日~○月〇日までの日付を抽出する」といったこともできそうじゃありませんか??

ではでは、次回はシートから「A列に日付がある行だけ」を抜き出すということをやってみたいと思います!!
お読みいただきありがとうございました<(_ _)>

次回の記事はコチラ↓
出品中のサービス↓

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す