この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
TrinityTです。
約半年ぶりの投稿になってしまいました・・・
今回はRubyでGoogleカレンダーを操作する方法を説明します。
ここではzorioさんが作成したRuby用のGoogleCalendarAPI操作ライブラリを使用しました。
参考URL:http://gcalapi.rubyforge.org/
■ インストール
gemでインストール可能です。
$ gem install gcalapi
■ 使用方法
以下の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
■ まとめ
本ライブラリを使用することで、他のカレンダーサービスやスケジューラとの連携などのマッシュアップが簡単に可能になると思います。
是非使用してみてはいかがでしょうか!