Google Apps Scriptで特定月のカレンダーのイベント情報を取得する

★気に入ったらシェアをお願いします!

event

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Googleカレンダーの記録を活用して過去の仕事の生産性を測定する方法にお伝えしています。

前回はこちらの記事で記録としてのカレンダーの入力方法について解説をしました。

仕事の生産性を測定して振り返るためのGoogleカレンダーの使い方
過去に何の仕事にどれだけ時間をかけてきたか、振り返ったことはありますか?Googleカレンダーを上手に記録しておくことで、これまでの仕事の生産性を測定するための貴重なデータになります。

過去のカレンダーの記録がきちんと入っていれば、あとはそれを引っ張ってきて活用するのみです。

今回はGoogle Apps Scriptで特定の月のカレンダーのイベント情報を取得する方法についてお伝えします。

カレンダーのイベント情報を取得するスクリプト

指定した月の一カ月分のイベント情報を取得するスクリプトはこちらです。

スクリプトの流れは

  1. カレンダーIDを指定してカレンダーを取得
  2. 取得する期間の開始日と終了日を算出
  3. カレンダーのイベントを取得
  4. 取得したイベント情報をログ出力

となります。

では、以下解説をしていきます。

カレンダーからイベント情報を取得

カレンダーIDを指定して特定のカレンダーを取得するにはCalendarApp.getCalendarByIdメソッドを使って

CalendarApp.getCalendarById(カレンダーID)

とします。

詳細は以下の記事をご覧ください。

毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送る
Google Apps Scriptを使ってチャットワークに色々と送ることができます。Googleカレンダーから当日の予定を取得してチャットワークに送る方法についてお伝えしたいと思います。

上記記事ではgetEventsForDayメソッドを使って当日のイベントの取得をしていますが、今回は1カ月分ですのでgetEventsメソッドを使います。

getEvents(取得開始日, 取得終了日)

これで取得開始日から取得終了日までのイベントをすべて取得することができます。

Dateオブジェクトと取得開始日と取得終了日

6行目から9行目で取得開始日startDateと取得終了日endDateを算出しています。

new Date(date)とすることで、startDateとendDateはDateオブジェクトとして「2016/02/01 00:00:00」という値を持ちます。

Dateオブジェクトは日時に関して取り扱うことができるオブジェクトで値として「年、月、日、時、分、秒、曜日」を持ちます。

endDateに関しては「2016/03/01 00:00:00」としたいので、

  • getMonthメソッドで「月」を取得
  • それにプラス1をしたものをsetMonthメソッドでセット

にて月をプラス1しています。

同様にDateオブジェクトの値を取得するメソッドとしては以下があります。

getFullYear() //年
getMonth() //月(値は0~11(1月~12月))
getDate() //日
getDay() //曜日(値は0~6(日曜日~土曜日))
getHours() //時
getMinutes() //分
getSeconds() //秒

取得したイベントから情報を取り出す

これでmyEventsに取得したイベントが格納されています。myEventsは複数のオブジェクトで構成されていますので、for each分ですべてのイベントについて情報を取り出します。

イベントの情報はそれぞれ

getTitle() //イベントのタイトル
getStartTime() //イベントの開始日時
getEndTime() //イベントの終了日時

として取得することができます。

実行結果

このスクリプトを実行した結果がこちらです。

GoogleカレンダーのイベントをGoogle Apps Scriptで取得

ちょっとごちゃごちゃしていますが、ちゃんと取得ができていますね。

まとめ

以上、Google Apps Scriptで特定の月のカレンダーのイベント情報を取得する方法についてお伝えしました。

Dateオブジェクトは少しややこしいかも知れませんが、カレンダーを操作するのであれば仲良くなっておくのが吉です。

次回は出力先をログではなくて、スプレッドシートに切り替えて集計をしやすくしていきます。

Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する
Googleカレンダーの記録を活用して仕事の生産性を測定する方法を進めています。Googleカレンダーの特定の月のイベントをスプレッドシートに出力するGoogle Apps Scriptを紹介します。

どうぞお楽しみに!

連載目次:Googleカレンダーの記録を活用して過去の仕事を振り返る

企業ではスプレッドシートを勤怠管理やプロジェクト進捗管理などに使っている場合も多いと思います。このシリーズでは、カレンダーとスプレッドシートを連携をさせて仕事の生産性を簡単に測定する方法についてお伝えしています。
  1. 仕事の生産性を測定して振り返るためのGoogleカレンダーの使い方
  2. Google Apps Scriptで特定月のカレンダーのイベント情報を取得する
  3. Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する
  4. Googleカレンダーの記録を活用してスプレッドシートに業務別のコスト計算
  5. Google Apps ScriptでGoogleカレンダーの場所・説明を取得する方法

コメント

  1. AK より:

    11行目にエラー出ないでしょうか?

    TypeError: null のメソッド「getEvents」を呼び出せません。(行 11、ファイル「コード」)

    • AKさん

      コメントありがとうございます!
      検証しましたが、無事に動作するようですね。

      以下「カレンダーID」ですが、対象のカレンダーのものに差し替える必要があります。差し替えていらっしゃいますでしょうか?

      そのまま実行されると、ご指摘のエラーが発生します。

      もしそうであれば、カレンダーIDの設定について以下記事をご参考頂ければと思います。
      https://tonari-it.com/gas-calendar/