TrinityTです。
約半年ぶりの投稿になってしまいました・・・
今回はRubyでGoogleカレンダーを操作する方法を説明します。
ここではzorioさんが作成したRuby用のGoogleCalendarAPI操作ライブラリを使用しました。
以下の3クラスを主として使用します。
GoogleCalendar::Event : 予定
GoogleCalendar::Calendar : ユーザのカレンダー
GoogleCalendar::Service : カレンダーサービスへの認証や検索条件を対話的に行う
通常の検索の場合は以下のようにします。
# アカウントメールアドレス mail = "hoge@gmail.com" # パスワード pass = "huga" # Googleカレンダーの「カレンダー設定」画面から取得した非公開URL feed = "http://www.google.com/calendar/feeds/hoge%40gmail.com/private-xx.../basic" srv = GoogleCalendar::Service.new(mail, pass) cal = GoogleCalendar::Calendar::new(srv, feed) events = cal.events events.each do |event| p event.title p event.desc end
# 実行結果 > "飲み会" "期間: 2008/08/13 19:00~23:00 \nJST........" "フットサル" "期間: 2008/08/09 09:30~11:30 \nJST........" ....
また、Service.queryメソッドを使うことで取得条件を付加することが可能です。
... srv = GoogleCalendar::Service.new(mail, pass) srv.query(feed, :"max-results" => 5) ...
主な条件
:max-results : 最大取得数
:orderby : 並び替え
:updated-min : 更新日(最古)
:updated-max : 更新日(最新)
:published-min : 登録日(最古)
:published-max : 登録日(最新)
:author : 登録者
次に予定の新規作成を行います。
前項で使用した非公開URLは読み取り専用のため、更新可能なURLに置き換える必要があります。
非公開URL(読み取り専用): http://www.google.com/calendar/feeds/hoge%40gmail.com/private-xx.../basic 非公開URL(更新可能): http://www.google.com/calendar/feeds/hoge%40gmail.com/private/full
mail = "hoge@gmail.com" pass = "huga" feed = "http://www.google.com/calendar/feeds/hoge%40gmail.com/private/full" srv = GoogleCalendar::Service.new(mail, pass) cal = GoogleCalendar::Calendar::new(srv, feed) event = cal.create_event event.title = "ゆっくり" event.desc = "ゆっくりしていってね!" event.where = "ゆっくりした結果がこれだよ!" event.st = Time.mktime(2008, 12, 24, 0, 0, 0) event.en = Time.mktime(2008, 12, 24, 12, 0, 0) event.save!
実行結果
更新や削除は取得したEventインスタンスに対してupdate,delete(destroy)を実行することで可能です。
# 更新 events = cal.events evnet = events[0] event.title = "Update!" event.update
# 削除 events = cal.events evnet = events[0] event.delete