I love the frozen FOOD.
2014年11月17日だかに、Google CalendarのV2のAPIが停止されました。
それに伴い、V2からV3の移行が必要となってます。
v2でRSSフィードでカレンダーを吸い上げていることもあるかと思うのですが、この時、fullとかbasicとか指定しますよね。
本日、2014年11月21日現在、fullは停止されていますが、basicは生きている様子。
ただ、今後、停止されるとおもわれるので、適宜改修しないとです。
v2まで、APIキーなしでもAPIがたたけましたが、今回からAPIキーを指定しないとたたけません。キーに対して、呼出し制限情報なども、設けられますのでご注意を。
キーの取得は、googleアカウントでログインしたのち、
Google Developers Console
に行ってプロジェクト作成後、つくりましょう。
https://www.googleapis.com/calendar/v3/calendars/カレンダーID/events?’.
‘key=APIKEY&timeMin=取得対象期間開始日&timeMax=取得対象期間最大日&maxResults=最大取得件数&orderBy=startTime&singleEvents=true
のようなアクセスでOKです。
取得対象期間開始日から、最大日までのイベントを、最大取得件数分もってきます。
カレンダーIDは、ブラウザで、googleカレンダーへ行き、取得対象となるカレンダーの設定情報からIDをもってきてください。「カレンダーのアドレス」という欄に「カレンダーID」と書いてあるかと思いますよ。
先ほどのURLをHTTPでたたくと、下記のようなjsonが返答されます。
{ "kind": "calendar#events", "etag": "\"etagデータ\"", "summary": "カレンダーの名前", "description": "カレンダーの情報", "updated": "最終更新日", "timeZone": "Asia/Tokyo", "accessRole": "reader", "defaultReminders": [], "items": [ { "kind": "calendar#event", "etag": "\"etagデータ\"", "id": "イベントID", "status": "confirmed", "htmlLink": "イベントのhtmlリンク先", "created": "カレンダー作成日", "updated": "更新日", "summary": "イベントタイトル", "description": "イベントの詳細", "location": "場所情報", "creator": { "email": "作成者メールアドレス", "displayName": "作成車名" }, "organizer": { "email": "カレンダーID", "displayName": "カレンダー名", "self": true }, "start": { "dateTime": "イベント開始日時" }, "end": { "dateTime": "イベント終了日時" }, : { 他イベント情報 } },
みたいな感じでかえってきます。”items”の下に、イベントが1つずつarrayで返答されてくる感じです。
尚、冒頭でいいましたが、これはjson形式なので、phpであればjson_decodeかましましょう。
日付は、2012-12-26T22:14:42.972Zのような形式になってるので、ご注意を、
phpで紹介します。
$urlinfo = "先ほど紹介したURL"; $results = file_get_contents( $urlinfo ); $jsn = json_decode($results,true); /*jsonをarray形式の情報で取得*/ foreach ($jsn['items'] as $item){ /*itemsの下のイベントを1つずつ処理*/ $startTime = $item['start']['dateTime']; /*イベント開始日時*/ $endTime = $item['end']['dateTime']; /*イベント終了日時*/ $title = $item['summary']; /*イベント名*/ : : イベントごとの処理 : }
のような感じで、1つ1つイベントを取得・処理していけばよろしいかと。
尚、$item[‘start’]などで指定するdateTime属性ですが、googleカレンダー上で日付だけの指定の場合(時間を入れてない場合)、この属性で日時は取得できません。
$item[‘start’][‘date’]で取得するようにしてください。
if ( array_key_exists( 'dateTime' , $item['start'] == TRUE ) { $startTime = $item['start']['dateTime']; } else { $startTime = $item['start']['date'] ); }
みたいな処理をすればよろしいかと。
Gem-one(ジェムワン) 権蔵
Gem-one代表.システム開発業ブランドGem-one adIT、音楽レッスン事業 Gem-one Music設立。ビリヤード・スケジュールサイト すけどんも絶賛運用中。
■ブログ
ちょろっとお時間頂戴