Googleカレンダー情報をPHPで取得してみる
こんにちは、システムエンジニアの今井です。
先日業務でGoogleカレンダーAPIを使う機会がありましたので、そのときに学んだ内容を共有したいと思います。
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」という名前で作成します。
3):GoogleカレンダーAPIをhogeプロジェクトに追加します。
・画面左の「APIと認証」を開いて「API」をクリックします。
・検索ボックスに「calendar」と入力して、「Calendar API」を検索します。表示された「Calendar API」をクリックします。
・「APIを有効にする」ボタンを押すと、「hoge」プロジェクト以下で「Calendar API」が利用できるようになります。
4):APIキーを発行します
・画面左の「APIと認証」を開いて「認証情報」をクリックします。
・画面中央の「認証情報を追加」をクリックして、「APIキー」を選択します。
・「サーバー キー」ボタンをクリックします。
・「名前部分」にはわかりやすい名前を入れ、「作成」ボタンをクリックします。次の画面でAPIキーが表示されますので、こちらのAPIキーを覚えておいてください。
以上で、GoogleAPIキーが取得できました。
4.Googleカレンダー設定
次に取得される側のGoogleカレンダーの設定を行ないます。
1):hogeカレンダーを作成します。
・マイカレンダーから「新しいカレンダーを作成」をクリックします。
2):カレンダー情報を設定します
・「このカレンダーを他のユーザーと共有する」と「このカレンダーを一般公開する」にチェックを入れてください。
以上でカレンダー側の設定は終了です。
5.PHPプログラムからカレンダー情報を取得してみる
1):「hoge」カレンダーに予定を追加してみます
2):カレンダーIDを取得します
・「hoge」カレンダー右の▼をクリックして、「カレンダー設定」をクリックします。
・「カレンダーのアドレス」にあります。「カレンダーID」が今回必要な情報になります。こちらを覚えておいてください。
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);
実行結果はこんな感じです
4):パラメータ説明
パラメータを設定することで検索条件の絞り込みができます。
パラメータ名説明
orderBy | 指定した条件で並び替えてくれます。startTimeまたはupdatedが指定できます。 |
maxResults | 最大件数を設定します。設定しない場合は全件取得されます。 |
timeMin | 開始日付を設定します。 |
timeMax | 終了日付を設定します。 |
以上でPHPでGoogleカレンダー情報を取得できるようになりました。
6.まとめ
今回はサーバーキーを使った設定方法でしたので、カレンダーを一般公開する必要があります。(一般公開したくない方はすみません!)
カレンダーを一般公開にしないまま、PHPプログラムから取得したい場合は、「サービスアカウント」方式の認証方式になります。
「サービスアカウント」方式の認証方式については、次の機会で説明できればと思います。