かずきち。の日記

サーバサイドエンジニアのつぶやき

13行でGoogleカレンダーにすでに予定が埋まっているか判定するコードを書く

あらすじ

f:id:kazukichi_0914:20210819151052g:plain

Googleカレンダーって便利ですよね。
みなさんも使っているかと思います。
ただGoogleカレンダーって何がすごいかって言うと、決して人間が予定を書き込む必要がないんです。

「機械」

にカレンダーを書き込んでもらうことができます。
上の画像だと、昭和の日やらみどりの日が重複して登録されていますよね?
人間だと重複判定ができますが、コンピュータはアタマが悪いのですでに予定があるかないか判定ができません。

f:id:kazukichi_0914:20210819151506g:plain

人間の場合、あ、スケジュールかぶってるな、重複してるなって判定ができますが…
自動実行をしているとたまにプログラムが暴走して大変なことが起きます。
Googleの暴走が怖いので重複チャックかけるスクリプトを書きました。

コード
//予定のゲストが予定を変更できるか取得するコード
function sampleCodeForCalendarAppIsAllDayEvent() {
  //var calendar = CalendarApp.getDefaultCalendar();
  const CALENDAR_ID = '**********************************@group.calendar.google.com'; //カレンダーID 
  const calendar = CalendarApp.getCalendarById(CALENDAR_ID);
  var date = new Date(); 
  var events = calendar.getEventsForDay(date);

  for (var i in events) {
    var event = events[i];
    Logger.log(event.isAllDayEvent());
    //Turueの場合予定あり
  }
}

21行で完成です。

短。

Trueの場合予定ありってありますよね?
なので先約があるかどうかの判定をするプログラムです。

さて早速実行

f:id:kazukichi_0914:20210819151506g:plain

すでに予定が入っているので「True」=(すでに先約あるよ)で帰ってくれば大成功です。

f:id:kazukichi_0914:20210819152331g:plain


Trueが帰ってきたので、重複予約は避けることができるわけです。
めでたしめでたしです。