Googleカレンダーの予定をスプレッドシートへ出力する

こんにちは!GMOアドパートナーズで社内システムサポート担当をしているK.Tです。
今回、Googleカレンダーの予定を一括出力する方法について調査しました。

<きっかけ>

国内産グループウェアのカレンダーでは大体備わっている「予定の一括CSV出力」機能。
Googleカレンダーでは簡易的にCSV形式で出力する機能が備わっていない・・・

Googleで提供されているエクスポート機能でiCal形式で出力して、Outlookやらにインポートして、
CSV出力するなんてやり方もあるようですが、ほかの人の予定出力ができません。
何より手順が多いので、この方法は断念。

行動分析や会議室などの設備稼働状況確認なんかで利用するため、CSV形式でほしかったので、
なんとかしようと思い立ちました!

<やりたい事>

  • 期間指定で特定メンバーまたは会議設備(リソース)の予定をCSV形式出力

Google Apps Scriptsを使って、Googleカレンダーイベントをスプレッドシートへ出力してみます。
こちらのリファレンスを参考にしました。

https://developers.google.com/apps-script/reference/calendar/

<カレンダーの取得とイベント出力>

Googleカレンダーでは、1ユーザや1設備のカレンダーを、Calendarオブジェクトとして扱います。
CalendarAppクラスで、Calendarオブジェクトの取得メソッドが用意されています。

IDを指定してCalendarオブジェクトを取得したりと、いくつかメソッドが用意されていますが、
今回はgetAllCalendarsメソッドを使いました。
このメソッドは、自身が保有しているすべてのユーザや設備のCalendarオブジェクトをArrayで返してきてくれます。

このメソッドで取れるのはこの赤枠部分のカレンダーになります。

ほしいCalendarオブジェクトを一気に取得してくれるので、
あとは、取得したCalendarオブジェクト毎にイベントをスプレッドシートへ出力するだけ!
CalendarクラスのgetEventsメソッドで、期間指定して、イベントを出力します。
シートへの書き出しは、最終行にイベントを追加するようにappendRowを使いました。
スクリプトの全容は、以下。

出力結果は、こんな感じです。

いい感じで取得できました!
(1行目の見出しは、事前に自分で書いておきました)

<まとめ>

カレンダーオブジェクトの概念をつかむのに、少し時間を要しました。

「一括エクスポートの機能がデフォルトで、備わっていない」なんて嘆いてましたが、
自分で作れってことですね!