第6回「祝日データの取得GoogleカレンダーAPI」PHPとHTMLで祝日入りカレンダーを作成

全体像 サンプル    を押すと、月が変わります。

 

こんにちは、昨日は前回の記事を書いてから、お酒を飲んで貯めておいたドラマ見て寝ました。だからやる気マンマンですー

 

んな事どうでもいいですよね。はい、じゃあ今回はカレンダーの祝日データをどうするかという記事を書きます。

こちらの記事を参考にさせていただきました:PHP工房

Googleの祝日データの取得方法

  1. Gmailアカウントを作る(既に持っていればOKです)
  2. https://code.google.com/apis/console/ へ移動
  3. 2で飛んだページでいろいろやって、APIキーを取得する
  4. 正常に動くか、テストファイルを使って確認。

 

1.Gmail(ジーメール)アカウントを作る(既に持っていればOKです)

これは「Google メール」と検索する出てくる、全て無料で使えるメールの事です。

誰でも登録できるので、しかも、Gmailのアカウントを作れば、そのアカウントでGoogleのサービスを全てログインできるようになりますので、さっそく作りましょう。

Gmailページ

 

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

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です