第6回「祝日データの取得GoogleカレンダーAPI」PHPとHTMLで祝日入りカレンダーを作成
全体像 サンプル ←や→を押すと、月が変わります。
こんにちは、昨日は前回の記事を書いてから、お酒を飲んで貯めておいたドラマ見て寝ました。だからやる気マンマンですー
んな事どうでもいいですよね。はい、じゃあ今回はカレンダーの祝日データをどうするかという記事を書きます。
こちらの記事を参考にさせていただきました:PHP工房
Googleの祝日データの取得方法
- Gmailアカウントを作る(既に持っていればOKです)
- https://code.google.com/apis/console/ へ移動
- 2で飛んだページでいろいろやって、APIキーを取得する
- 正常に動くか、テストファイルを使って確認。
1.Gmail(ジーメール)アカウントを作る(既に持っていればOKです)
これは「Google メール」と検索する出てくる、全て無料で使えるメールの事です。
誰でも登録できるので、しかも、Gmailのアカウントを作れば、そのアカウントでGoogleのサービスを全てログインできるようになりますので、さっそく作りましょう。
2.https://code.google.com/apis/console/ へ移動
ここで、1で作ったGmailのアカウントを使ってログインします。
既にGoogleにログインしている人はページが表示されていると思います。
3.2で飛んだページでいろいろやって、APIキーを取得する
ページに飛ぶと、なんやらいっぱいの除法が出てきます。2017年5月時点ではこんな感じ
それで、検索すると子に「 Calendar 」て入れて、検索
すると「Google Calendar API」てのが出てくるからそれをクリック
利用規約とか聞かれた、「はい」にチェックを入れて「同意する」ボタン
俺の場合は「新しいプロジェクトを作る必要があると」と警告が出てたのでプロジェクト作成しました。その後「⇒有効にする」が押せるようになりました。上にある「⇒有効にする」ボタンを押します。
次に、右上の「忍書情報を作成」をクリック
なんやら、設定して進んでいきます。
でここでプロジェクトキーだ表示されます。大事な情報なので、大切に保管しましょう。
それで左メニューの「認証情報」を押して、「認証情報を作成」からAPIキーを選択する
APIキーが作成されます
4.正常に動くか、テストファイルを使って確認。
こちらのサイトを参考にさせていただきました:
下記のサイト見るなら、2つのサイトどっちも見てください。片方だけだとアレです。下のソースこぴぺすれば正常に動きますから、参考サイト見なくてもいいです。
https://www.php-factory.net/calendar_form/holiday_update.php
http://qiita.com/Chrowa3/items/93c55d83b972d0ddfa10
2017年の祝日データを調べます。※12行目には3で取得したアクセスキーを’で囲って書き換えてください。
(他調べたかったら、3行目の2017をほかの年に書き換えて)
<?php $year = "2017"; $Holidays = getHolidays($year); print $year."<br/>"; print_r($Holidays); //GoogleカレンダーAPIから祝日を取得 function getHolidays($year) { $api_key = 'さっき取得したAPIキーをこちらに'; $holidays = array(); $holidays_id = 'japanese__ja@holiday.calendar.google.com'; // Google 公式版日本語 //$holidays_id = 'japanese@holiday.calendar.google.com'; // Google 公式版英語 //$holidays_id = 'outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com'; // mozilla.org版 ←2017年5月時点で文字化け発生中(山の日) $url = sprintf( 'https://www.googleapis.com/calendar/v3/calendars/%s/events?'. 'key=%s&timeMin=%s&timeMax=%s&maxResults=%d&orderBy=startTime&singleEvents=true', $holidays_id, $api_key, $year.'-01-01T00:00:00Z' , // 取得開始日 $year.'-12-31T00:00:00Z' , // 取得終了日 150 // 最大取得数 ); if ( $results = file_get_contents($url, true )) { //JSON形式で取得した情報を配列に格納 $results = json_decode($results); //年月日をキー、祝日名を配列に格納 foreach ($results->items as $item ) { $date = strtotime((string) $item->start->date); $title = (string) $item->summary; $holidays[date('Y-m-d', $date)] = $title; } //祝日の配列を並び替え ksort($holidays); } return $holidays; } ?>
ブラウザでか確認すると
配列の中に祝日データが入ってることが分かりました。
次回の記事では、カレンダーに祝日を表示させます。
ということでお疲れ様でした。ちょっと休憩します。
Leave a comment