あけましておめでとうございます。あんまり正月とか関係なしに淡々と開発しております。
年末年始に外出すると混むんだもん。
で、メイドめーるでデフォルト以外のGoogleカレンダーの情報がとれない件。
Googleカレンダーでは、こうやって複数のカレンダーをまとめて表示させることが出来るのですけど、メイドめーるがメールしてくれるのは一番上のものだけになっております。
なんでかというと、Googleカレンダーにアクセスするのに使っているgcalapiで、カレンダーリストを取得するAPIがみつからなかったからです。
正確に言うと、ユーザー名とパスワードを使ったらとれるのですけど、なぜかAuthSub認証の場合だけ実装されていないのです。
Googleのドキュメントを見たら、取得する方法があるみたいなので、コードを追加してみました。
module GoogleCalendar class ServiceAuthSub CALENDAR_LIST_PATH = "http://www.google.com/calendar/feeds/default/allcalendars/full" # get the list of user's calendars and returns http response object def calendar_list logger.info("-- get_calendar_list_responce st --") if logger auth unless @auth uri = URI.parse(CALENDAR_LIST_PATH) res = do_get(uri, {}) logger.info("-- get_calendar_list_responce en(#{res.message}) --") if logger res end alias :calendars :calendar_list end end
これだけ実装してあげれば、あとは通常認証と同じコードが働くので、こんなふうにして複数のカレンダーを取ってくることが出来ます。
require 'gcalapi' require 'googlecalendar/service_auth_sub' require 'googlecalendar/calendar' srv1 = GoogleCalendar::ServiceAuthSub.new(user.calendarToken) cal_list1 = GoogleCalendar::Calendar.calendars(srv1)
出来ればこのコード、本家に取り込んでいただけるとみんな幸せになるように思うのですけど。連絡つくかな?