14.6. Google Calendar の使用法

Zend_Gdata_Calendar クラスを使用して、オンラインの Google Calendar サービスでイベントの閲覧、作成、更新、 そして削除が行えます。

Google Calendar API についての詳細な情報は http://code.google.com/apis/calendar/overview.html を参照ください。

14.6.1. Google Calendar への問い合わせ

閲覧したいカレンダーの所有者を setUser() メソッドで指定します。指定する値は文字列で、一般的には Google Calendar のユーザアカウントとなります。 グループのカレンダーを指定することもできます。

<?php
$gdataCal = new Zend_Gdata_Calendar();

// Google の開発者のの公開カレンダーを取得します
$gdataCal->setUser('developer-calendar@google.com');
$feed = $gdataCal->getCalendarFeed();
?>

このオブジェクトの使用法についての詳細は、 Zend_Feed のドキュメントを参照ください。

ユーザを指定しなかった場合のデフォルトは "default" となります。認証済みの Http クライアントを使用している場合は、 その Google アカウントに関連付けられたカレンダーがデフォルトになります。

<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);

// 現在のユーザのカレンダーを取得します
$myCalendarFeed = $gdataCal->getCalendarFeed();
?>

14.6.1.1. イベントの表示

setVisibility() メソッドによって、 フィードから返されたエントリを一般に公開するか プライベートエントリにするかを設定できます。 プライベートエントリは、認証済みの Http クライアントでアクセスした場合にのみアクセス可能となります。 デフォルトは "public" です。

<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);

// 自分のイベントを、他の人も閲覧できるようにします
$gdataCal->setVisiblity('public');
$feed = $gdataCal->getCalendarFeed();
?>

14.6.1.2. イベントデータの表示

setProjection() メソッドを使用して、 フィードにどれだけの情報を返すかを指定します。 たとえば "full" を指定すると、 カレンダーのイベントの全プロパティが含まれますが、 エントリに対するコメントは含まれません。 "composite" は "full" と似ていますが、 フィードエントリの中にコメントのフィードが含まれます。 その他指定可能な値についての情報は Google Calendar API のドキュメントを参照ください。 デフォルト値は "full" です。

<?php
$gdataCal = new Zend_Gdata_Calendar();

// johndoe のカレンダから最小限の情報を取得します
$gdataCal->setUser('johndoe@gmail.com');
$gdataCal->setProjection('free-busy');
$feed = $gdataCal->getCalendarFeed();
?>

14.6.1.3. イベントの日付

setStartMin() メソッドおよび setStartMax() メソッドで、カレンダーのイベントの日付の範囲を指定します。 startMin を指定すると、 それより前の日付のイベントはフィードに含まれません。 同様に、startMax で指定した日付より後の日付のイベントもフィードに含まれません。

<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);

// 12/1 より後のイベントのみを取得します
$gdataCal->setStartMin('2006-12-01');
$feed = $gdataCal->getCalendarFeed();
?>

14.6.1.4. List calendars

getCalendarListFeed() メソッドを使用して、 現在認証済みのユーザに関連するカレンダーの一覧のフィードを取得します。 このフィードを取得するには、認証済みの Http クライアントを使用する必要があります。

<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);
$myCalendars = $gdataCal->getCalendarListFeed();
?>

14.6.2. Google Calendar への投稿

新しいイベントを自分のカレンダーに投稿するには post() メソッドを使用します。 Google Calendar API のドキュメントのガイドラインにもとづいた XML 定義でイベントエントリを作成し、その XML を投稿します。 この操作を行うには、認証済みの Http クライアントを使用する必要があります。

<?php
$gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient);

$xmlString = <<<XML
<entry xmlns='http://www.w3.org/2005/Atom'
    xmlns:gd='http://schemas.google.com/g/2005'>
  <category scheme='http://schemas.google.com/g/2005#kind'
    term='http://schemas.google.com/g/2005#event'></category>
  <title type='text'>Tennis with Beth</title>
  <content type='text'>Meet for a quick lesson.</content>
  <author>
    <name>Jo March</name>
    <email>jo@gmail.com</email>
  </author>
  <gd:transparency
    value='http://schemas.google.com/g/2005#event.opaque'>
  </gd:transparency>
  <gd:eventStatus
    value='http://schemas.google.com/g/2005#event.confirmed'>
  </gd:eventStatus>
  <gd:where valueString='Rolling Lawn Courts'></gd:where>
  <gd:when startTime='2006-04-17T15:00:00.000Z'
    endTime='2006-04-17T17:00:00.000Z'></gd:when>
</entry>
XML;

$xml = new SimpleXMLElement($xmlString);

$gdataCal->post($xml->asXML());
?>