Google Calendar API を使用して祝日を取得する方法について。
Google 側の仕様が結構変わっているようで、ネット上に落ちてる情報が古かったので載せておきます。
(今回紹介する Google Calendar API の利用例は、コチラの記事にて 【PHP】期間内の祝日・定休日などを含んだ日付情報を取得する)
1.API キーの発行
Google Cloud Platformにアクセスして「Google API を利用する」を選択する。
他者にAPIキーを利用されないように「HTTP リファラー」などで、APIキーに制限をかける。
「HTTP リファラー」で、APIキーに制限をかけた場合、同一ドメイン内であれば、Google Map などにも使いまわせます。
2.Google Calendar API を使用して祝日を取得する関数を用意
/** * 期間内の祝日を取得する * * @param string $date_start 開始日(Y-m-d) * @param string $date_end 終了日(Y-m-d) * @param string $google_api_key Google API Key * @return array 祝日の配列 */ function getHolidayList($date_start, $date_end, $google_api_key) { // カレンダーID $calendar_id = urlencode('ja.japanese#holiday@group.v.calendar.google.com'); $max_results = 100; $startDate = new DateTime($date_start); $endDate = new DateTime($date_end); $param_start = $startDate->format('Y-m-d') . 'T00:00:00Z'; $param_end = $endDate->format('Y-m-d') . 'T00:00:00Z'; $url = 'https://www.googleapis.com/calendar/v3/calendars/' . $calendar_id . '/events'; $url .= '?key=' . $google_api_key; $url .= '&timeMin=' . $param_start; $url .= '&timeMax=' . $param_end; $url .= '&maxResults=' . $max_results; $url .= '&orderBy=startTime'; $url .= '&singleEvents=true'; $ref = 'http://humo-life.net'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_REFERER, $ref); $result = curl_exec($ch); curl_close($ch); if (empty($result) === true) { return array(); } $json = json_decode($result); if (empty($json->items) === true) { return array(); } $holiday_list = array(); foreach ($json->items as $item) { $holiday_list[] = $item->start->date; } return $holiday_list; }
ざっくり解説
カレンダーIDは、Googleカレンダーの設定画面から確認可能です。
https://calendar.google.com/calendar/r
API に制限をかけたので「CURLOPT_REFERER」でリファラーを設定する必要があります。
3.実際に使ってみる
使用例は以下の記事にて。
「2」で紹介している「getDateInfo」関数内で使用しています。
【PHP】期間内の祝日・定休日などを含んだ日付情報を取得する)