2015年7月16日木曜日

Google App ScriptでGoogleカレンダーの情報を抜き出してみる

こんにちは、井下です。

これまでGoogle Apps Scriptからの連携として、主にスプレッドシートやFusion Tables、Google Analyticsについてご紹介してきましたが、今回はGoogleカレンダーとの連携方法についてご紹介しようと思います。

GoogleカレンダーはGoogleから提供されるサービスの中でも比較的利用されていると思います。業務で利用されている方も少なくないのではないでしょうか?


では、早速Google Apps Scriptのプロジェクトを起動し、次のコードを実行してみてください。
function myFunction() {
  var cal = CalendarApp.getDefaultCalendar();
  var startDate = new Date("2015/7/13");
  var endDate = new Date("2015/7/18");
  var events = cal.getEvents(startDate, endDate);

  for(var index in events) {
    Logger.log(events[index].getTitle());
    Logger.log(events[index].getStartTime());
    Logger.log(events[index].getEndTime());
  }
}
※1 Google Apps Scriptのプロジェクト作成方法は過去のブログ("Google Apps Scriptを使う準備"のあたり)をご参照ください。
※2 "startDate"および"endDate"は、取得したい日付の範囲に応じて変更してください。

実行が終わったら、ログを確認してみましょう。

指定した期間内でスケジュールしていた予定の名前、予定の開始日時、予定の終了日時が出てきています。

コードの中身を簡単に説明すると、1行目の"var cal = CalendarApp.getDefaultCalendar()"で連携先のカレンダーを指定しています。"getDefaultCalendar"とあるように、ユーザのデフォルトのカレンダー(Googleカレンダーを開いたとき、最初に開いているカレンダー)を連携先にしています。
ちなみにカレンダーのIDやカレンダーの名前と言った情報を元に、他のカレンダーを連携先に指定することもできます。その場合は"getDefaultCalendar"に代わって、別のメソッドを利用することになりますが、今回は割愛します。気になる方は、Google Apps Scriptのリファレンスをご参照ください。

5行目の"var events = cal.getEvents(startDate, endDate);"で、実際にカレンダーに入っている予定の情報を全て取得しています。(あくまで"startDate"~"endDate"の範囲内のですが)

そして7~11行目で取得した予定の情報から、予定の名前、予定の開始日時、予定の終了日時をログに出力させています。


もちろん、"予定の情報"は予定の名前以外に、様々な情報を持っています。予定の開始時刻や終了時刻、自分以外の予定の参加者(ゲスト)、予定に書いた説明など、"予定"として作成したときに入力したデータなら、取得することが可能です。

逆にGoogle Apps Scriptを使って、予定の情報を書き換えることもできます。取得に比べると用途が限られそうですが、自動で予定を入れたい場合などに使えるでしょうか。


今回は触り程度でしたが、次回はGoogleカレンダーの情報を元に、作業の実績時間を表にして、スプレッドシートへ出力してみようと考えています。

イメージ図

企業に勤めている方は、何の作業にどれだけ時間を使ったか、報告を求められることが多いと思いますが、(Googleカレンダーに予定と実績を入れておくことで)後から時間を計算する手間を省くことを目標にします。

0 件のコメント:

コメントを投稿