PHPでGoogle Calendar APIを使って祝日を求める

(1/1)
PHP で祝日を求める」では計算によって祝日を求める PHP プログラムを紹介したが、今回は Google Calendar API を呼び出して祝日を求めるプログラムを作ってみることにする。

サンプル・プログラム

PHPでGoogle Calendar APIを使って祝日を求める

Google Calendar API v3

Google Calendar API」を使うことで、わが国の祝日を取得することができる。ただし、2008 年(平成 20 年)以降しか取得できない。
入力パラメータ(IN)は GET で渡し、出力結果(OUT)は json 形式で戻るという API である。

calendarID は、Google が公式に用意している日本語カレンダー ja.japanese#holiday@group.v.calendar.google.com を利用する。
WebAPIのURL
URL
https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events
{calendarId} = urlencode('ja.japanese#holiday@group.v.calendar.google.com')

入力パラメータ
項目名 フィールド名 内  容
Google API key key string Google Developer Consoleから無料で入手できる。
取得開始日時 timeMin string 取得開始日時。RFC3339形式。
取得終了日時 timeMax string 取得終了日時。RFC3339形式。
取得件数 maxResults int 取得する最大件数。
並び順 orderBy string 並び順。
シングル・イベント singleEvents boolean TRUE/FALSE

Google API key

0025: //Google API key(自分のキーを設定すること)
0026: define('GOOGLE_API_KEY', '***************************************');

Google Calendar API」を利用するためには、Google API key を取得する必要がある。Google Developer Console から無料で取得できる。

サンプル・プログラムの解説:Google Calendar API呼び出し

0147: /**
0148:  * Google Calendar APIを使って1年分の祝日を取得
0149:  * @param int $year  西暦年
0150:  * @param array $holidays 祝日を格納する配列
0151:  * @return int 格納した祝日数
0152: */
0153: function getHoliday_by_Google($year, &$holidays) {
0154:     $type = urlencode('ja.japanese#holiday@group.v.calendar.google.com');
0155:     $google_api_key = GOOGLE_API_KEY;
0156:     $start  = sprintf("%04d-01-01T00:00:00Z", $year);
0157:     $finish = sprintf("%04d-01-01T00:00:00Z", $year + 1);
0158:     $url = "https://www.googleapis.com/calendar/v3/calendars/{$type}/events?key={$google_api_key}&timeMin={$start}&timeMax={$finish}&maxResults=50&orderBy=startTime&singleEvents=true";
0159: 
0160:     $cnt = 0;
0161:     $result = file_get_contents($url);
0162:     $result = json_decode($result);
0163:     if (!empty($result->items)) {
0164:         foreach ($result->items as $value) {
0165:             $title = (string) $value->summary;
0166:             $date = (string) $value->start->date;
0167:             $holidays[$date] = $title;
0168:             $cnt++;
0169:         }
0170:     }
0171:     return $cnt;
0172: }

WebAPI の呼び出しは、今までのプログラムと同じだ。
戻り値は JSON 形式であるが、PHP には関数  json_decode  が組み込まれているので、これを使って、個々の祝日に分解する。

プログラムのその他の部分は、「PHP で祝日を求める」で使ったものとほぼ同じである。

活用例

日本の祝日を調べる:みんなの知識 ちょっと便利帳」では、このサンプル・プログラムを活用し、見やすい月間カレンダー表示にできるようにしている。ありがとうございます。

参考サイト

(この項おわり)
header