2014年7月7日月曜日

[GAS] CalendarApp、Calendarのパフォーマンス比較


GoogleカレンダーもGoogle Apps Scriptで操作できますが、
その方法には2通りあります。
CalendarAppとCalendarですが、ここにもパフォーマンスの差があります。

下図の様なカレンダーで指定期間内の3つのイベントを取得する処理を考えます。

まずはCalendarAppから。

function func01() {
  var start = new Date(2014, 7 - 1, 7, 0, 0, 0);
  var end = new Date(2014, 7 - 1, 11, 23, 59, 59);
  var calendar = CalendarApp.getCalendarById
                   ("ooerh9mbu1v5htghbnio67hetk@group.calendar.google.com");
  var events = calendar.getEvents(start, end);
  for (var i = 0; i < events.length; i++) {
    Logger.log(events[i].getTitle());
  }
}
実行時間はこんな感じ。
1.8秒くらい。
3件のイベントを取得するごときの処理にしては
時間がかかり過ぎかな、と思います。

次にCalendar。
function func02() {
  var start = new Date(2014, 7 - 1, 7, 0, 0, 0);
  var end = new Date(2014, 7 - 1, 11, 23, 59, 59);
  var calendar = Calendar.Events.list
                   ("ooerh9mbu1v5htghbnio67hetk@group.calendar.google.com", 
                   {timaMin: start.toISOString(), timeMax: end.toISOString()});
  var events = calendar.items;
  for (var i = 0; i < events.length; i++) {
    Logger.log(events[i].summary);
  }
}
こちらの実行時間は、
0.34秒。5倍くらい速いですね。
カレンダーの数や、イベントの数が増えれば当然その差は開いていきます。

ただし、Calendarを使用するには設定が2つ必要です。
1つ目は[リソース] > [Googleの拡張サービス] からCalendarAPIをONにすること。
2つ目は上図のダイアログからGoogleデベロッパーコンソールを開き、
Calendar APIをONにすること。

この2つの設定で使用可能となります。

制限がもう1点。

1日に10万リクエストまでしか使えません。
そのため、それなりの規模の業務でバンバン使う、ということになると
難しいかもしれません。

逆にそこそこの規模であれば有効だと思います。



拍手する にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村

プログラマー ブログランキングへ

0 件のコメント:

コメントを投稿