サンプル・プログラム:実行例
サンプル・プログラム
getHolidayGoogle.php | サンプル・プログラム本体 |
Google Calendar API v3
入力パラメータ(IN)はGETで渡し、出力結果(OUT)はjson形式で戻るというAPIである。
calendarIDは、Googleが公式に用意している日本語カレンダー ja.japanese#holiday@group.v.calendar.google.com を利用する。
URL |
---|
https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events |
{calendarId} = urlencode('ja.japanese#holiday@group.v.calendar.google.com') |
フィールド名 | 要否 | 内 容 |
---|---|---|
key | 必須 | Google API key |
timeMin | 必須 | 取得開始日時。RFC3339形式。 |
timeMax | 必須 | 取得終了日時。RFC3339形式。 |
maxResults | 任意 | 取得する最大件数。 |
orderBy | 任意 | 並び順。 |
singleEvents | 任意 | シングル・イベント。TRUE/FALSE |
Google API key
0043: //Google API key(自分のキーを設定すること)
0044: define('GOOGLE_API_KEY', '*********************************');
解説:Google Calendar API呼び出し
0235: /**
0236: * Google Calendar APIを使って1年分の祝日を取得
0237: * @param int $year 西暦年
0238: * @param array $holidays 祝日を格納する配列
0239: * @param string $url WebAPIのURL格納用
0240: * @return int格納した祝日数
0241: */
0242: function getHoliday_by_Google($year, &$holidays, &$url) {
0243: $type = urlencode('ja.japanese#holiday@group.v.calendar.google.com');
0244: $google_api_key = GOOGLE_API_KEY;
0245: $start = sprintf("%04d-01-01T00:00:00Z", $year);
0246: $finish = sprintf("%04d-01-01T00:00:00Z", $year + 1);
0247: $url = "https://www.googleapis.com/calendar/v3/calendars/{$type}/events?key={$google_api_key}&timeMin={$start}&timeMax={$finish}&maxResults=50&orderBy=startTime&singleEvents=true";
0248:
0249: $cnt = 0;
0250: $result = file_get_contents($url);
0251: $result = json_decode($result);
0252: if (!empty($result->items)) {
0253: foreach ($result->items as $value) {
0254: $title = (string)$value->summary;
0255: $date = (string)$value->start->date;
0256: $holidays[$date] = $title;
0257: $cnt++;
0258: }
0259: }
0260: return $cnt;
0261: }
戻り値はJSON形式であるが、PHPには関数 json_decode が組み込まれているので、これを使って、個々の祝日に分解する。
プログラムのその他の部分は、「PHPで祝日を求める」で使ったものとほぼ同じである。
参考サイト
- Google Calendar API
- PHPで祝日を求める:ぱふぅ家のホームページ
(2022年1月10日)表示改良,PHP8対応,リファラ・チェック改良