ホーム DoRuby RubyでGoogleカレンダーを操作する

RubyでGoogleカレンダーを操作する

この記事はアピリッツの技術ブログ「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

 

 まとめ

本ライブラリを使用することで、他のカレンダーサービスやスケジューラとの連携などのマッシュアップが簡単に可能になると思います。

是非使用してみてはいかがでしょうか!

記事を共有

最近人気な記事