NEWS ABOUT Solution WORKS TEAM BLOG お問い合わせ JP EN

Googleカレンダー情報をPHPで取得してみる

こんにちは、システムエンジニアの今井です。

先日業務でGoogleカレンダーAPIを使う機会がありましたので、そのときに学んだ内容を共有したいと思います。

calendar_big
 
 
 
 
 
 
 
 

1.今回やろうと思うこと

・自分のGoogleカレンダーの「hoge」という名前のカレンダーから情報を取得したい

・PHPプログラムで「hoge」カレンダー情報を取得して、var_dumpする

・PHPプログラムはカレンダー情報の読み込みだけを行う、PHPプログラムからカレンダーへの書き込みは行わない

 

2.用意するもの

GoogleカレンダーAPIを利用するにあたって必要な情報は以下の3つになります。

・Googleアカウント

・GoogleAPIキー

・GoogleAPIアクセス用プログラム

(Googleアカウントの取得方法はここでは省略させていただきます)

 

3.GoogleAPIキーの発行方法

1):GoogleDeveloperConsoleページにアクセスします

・以下のURLにアクセスします

https://code.google.com/apis/console/

2):プロジェクトを作成します

・初回アクセス時(左側画像)
 画面左上の「Google APIを利用する」をクリックします
・プロジェクト作成後のアクセス時(右側画像)
 画面左上の「プロジェクト作成」をクリックします

初回アクセス時
プロジェクト作成後のアクセス時

 

 

 

 

 

・ここでは「hoge」という名前で作成します。

google_2

 

 

 

 

3):GoogleカレンダーAPIをhogeプロジェクトに追加します。

・画面左の「APIと認証」を開いて「API」をクリックします。

google_3

 

 

 

 

 

・検索ボックスに「calendar」と入力して、「Calendar API」を検索します。表示された「Calendar API」をクリックします。

google_4

 

 

 

 

 

・「APIを有効にする」ボタンを押すと、「hoge」プロジェクト以下で「Calendar API」が利用できるようになります。

google_5

 

 

 

 

 

 

4):APIキーを発行します

・画面左の「APIと認証」を開いて「認証情報」をクリックします。
・画面中央の「認証情報を追加」をクリックして、「APIキー」を選択します。

google_6

 

 

 

 

 

・「サーバー キー」ボタンをクリックします。

google_7

 

 

 

 

 

・「名前部分」にはわかりやすい名前を入れ、「作成」ボタンをクリックします。次の画面でAPIキーが表示されますので、こちらのAPIキーを覚えておいてください。

google_8

 

 

 

 

 

以上で、GoogleAPIキーが取得できました。

 

4.Googleカレンダー設定

次に取得される側のGoogleカレンダーの設定を行ないます。

1):hogeカレンダーを作成します。

・マイカレンダーから「新しいカレンダーを作成」をクリックします。

google_9

 

 

 

 

2):カレンダー情報を設定します

・「このカレンダーを他のユーザーと共有する」と「このカレンダーを一般公開する」にチェックを入れてください。

google_10

 

 

 

 

 

 

 

以上でカレンダー側の設定は終了です。

 

5.PHPプログラムからカレンダー情報を取得してみる

1):「hoge」カレンダーに予定を追加してみます

google_11

 

 

 

 

 

 

 

 

2):カレンダーIDを取得します

・「hoge」カレンダー右の▼をクリックして、「カレンダー設定」をクリックします。

google_12

 

 

 

 

 

 

 

 

・「カレンダーのアドレス」にあります。「カレンダーID」が今回必要な情報になります。こちらを覚えておいてください。

google_13

 

 

 

 

 

 

 

 

3):PHPプログラムから情報を取得する

Google側の設定で長くなりましたが、ようやくPHPプログラムの登場です。

<?php
/**
 * 以下の条件のカレンダー情報を取得します
 * ・2015年1月1日~2015年12月31日まで
 * ・カレンダーの開始日時の昇順で取得
 * ・10件データを取得
 */
define('CALENDAR_ID', 'ここにカレンダーIDを入れてください');
define('API_KEY', 'ここにはAPIキーを入力してください');
define('API_URL', 'https://www.googleapis.com/calendar/v3/calendars/'.CALENDAR_ID.'/events?key='.API_KEY.'&singleEvents=true');

// ここでデータを取得する範囲を決めています
$t = mktime(0, 0, 0, 1, 1, 2015);
$t2 = mktime(0, 0, 0, 12, 31, 2015);

$params = array();
$params[] = 'orderBy=startTime';
$params[] = 'maxResults=10';
$params[] = 'timeMin='.urlencode(date('c', $t));
$params[] = 'timeMax='.urlencode(date('c', $t2));

$url = API_URL.'&'.implode('&', $params);

$results = file_get_contents($url);

$json = json_decode($results, true);

var_dump($json);

実行結果はこんな感じです

google_14

 

 

 

 

 

 

4):パラメータ説明

パラメータを設定することで検索条件の絞り込みができます。

パラメータ名説明

orderBy 指定した条件で並び替えてくれます。startTimeまたはupdatedが指定できます。
maxResults 最大件数を設定します。設定しない場合は全件取得されます。
timeMin 開始日付を設定します。
timeMax 終了日付を設定します。

以上でPHPでGoogleカレンダー情報を取得できるようになりました。

 

6.まとめ

今回はサーバーキーを使った設定方法でしたので、カレンダーを一般公開する必要があります。(一般公開したくない方はすみません!)

カレンダーを一般公開にしないまま、PHPプログラムから取得したい場合は、「サービスアカウント」方式の認証方式になります。

「サービスアカウント」方式の認証方式については、次の機会で説明できればと思います。

 

 

今井 健一朗
ひとつ前の投稿 ひとつ前の投稿
ひとつ前の投稿 ひとつ前の投稿 ミャンマーで面接をしてきました。