スタッフブログ

  • 最新配信
  • RSS

openpearの旅 第2回:Services_Google_Calendar

 : 技術全般 2009/3/4 21:04

Blogger's Avatar

Services_Google_Calendar ( http://openpear.org/package/Services_Google_Calendar )は,
文字通り,GoogleCalendarをコントロールするライブラリです.
GoogleCalendarには,Google Calendar Data API (http://code.google.com/intl/ja/apis/calendar/)があり,
本ライブラリはこのAPIを使って,カレンダー制御を実現しています.

使い方は,パッケージのサイトを見てもらうとわかるように,インスタンスを作成し,getEventsでイベント取得.
addEventでイベント登録になっています.

イベントの参照
require_once 'Services/Google/Calendar.php';

// initialize
$gc = new Services_Google_Calendar();

// get events data
$public_data = $gc->getEvents($gmail_id);

// get events data (private mode)
$private_data = $gc->getEvents($gmail_id, $hash);

イベントの登録
require_once 'Services/Google/Calendar.php';

// initialize
$gc = new Services_Google_Calendar($gmail_id, $passwd);

// set event data
$entry['title']        = 'Event title';
$entry['content']      = 'Event description';
$entry['where']        = 'Where the event helds';
$entry['when'][0]      = '2006-10-20';
$entry['when'][1]      = '2006-10-24';
$entry['transparency'] = 'transparent';
$entry['visibility']   = 'private';

// add an event
$result = $gc->addEvent($entry);

このように非常に簡単に操作できるのですが,
この操作を行う前にしっておかなければいけない要素が3つあります.

それは,「カレンダーのid」「パスワード」「ハッシュ」です.

カレンダーのidとは文字通り,カレンダー毎に割りふられたidです.
プログラム上ではこれを引数に指定する事でカレンダーを指定します.
プライマリーカレンダー(アカウントを作った時に最初にできているカレンダー)の場合,
カレンダーのidは,gmailのメールアドレスになっています.
が,後で作ったカレンダーは,ランダムなidがついているので,参照時にこれを指定する必要があります.
カレンダーのidは,googleカレンダーにログインし,カレンダーの設定から「限定公開URL」のXMLフィードのURLで調べる事ができます.

限定公開URLは以下のような形式になっています.

http://www.google.com/calendar/feeds/[ID]@group.calendar.google.com/private-[HASH]/basic

この中の[ID]が,カレンダーのidになっています.

パスワードとは,そのままgmailのパスワードを示します.特に説明の必要はありませんね.

ハッシュとは,先ほどの限定公開URLにある[HASH]の部分の事です.
カレンダーidとハッシュを指定する事で,プライベートなイベントを取得する事ができます.

今まで,Google CalendarのAPIは難しそうだからとicalを出力して,それをGoogle Calendarに読ませていたのですが,
icalは表示できる量に制限があるので,これからはServices_Google_Calendarでイベント登録をしていこうと思います.

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.