サンプル・プログラム:実行例
目次
サンプル・プログラム
| getHolidayGoogle.php | サンプル・プログラム本体 |
| .pahooEnv | クラウドサービスを利用するためのアカウント情報などを記入する .env ファイル。 使い方は「各種クラウド連携サービス(WebAPI)の登録方法」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.3.0 | 2026/01/11 | PHP8.5対応:double→float |
| 2.2.0 | 2025/09/19 | .pahooEnv導入 |
| 2.1.0 | 2025/02/11 | pahooInputData.php 導入,など |
| 2.0.1 | 2024/09/23 | 参考URL変更 |
| 2.0 | 2022/01/10 | 表示改良,PHP8対応,リファラ・チェック改良 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
Google Calendar API v3
入力パラメータ(IN)はGETで渡し、出力結果(OUT)は json形式で戻るという REST API である。
calendarIDは、Googleが公式に用意している日本語カレンダー ja.japanese#holiday@group.v.calendar.google.com を利用する。2025年(令和7年)2月現在、国民の祝日だけでなく、銀行休業日なども祝日として取得する仕様に変わっている。
| 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 |
準備:初期値など
getHolidayGoogle.php
55: // 初期値(START) =============================================================
56:
57: // 表示幅(ピクセル)
58: define('WIDTH', 600);
59:
60: // 指定できる西暦年の範囲;現在年±10
61: define('MIN_YEAR', date('Y') - 10);
62: define('MAX_YEAR', date('Y') + 10);
63:
64: // -- 以下のデータは .env ファイルに記述可能
65: // Google Cloud Platform APIキー
66: // https://cloud.google.com/maps-platform/
67: if (isset($_ENV['PAHOO_GOOGLE_API_KEY_1'])) {
68: define('GOOGLE_API_KEY', $_ENV['PAHOO_GOOGLE_API_KEY_1']);
69: } else {
70: define('GOOGLE_API_KEY', '');
71: }
72:
73: // 初期値(END) ===============================================================
解説:Google Calendar API呼び出し
getHolidayGoogle.php
226: /**
227: * Google Calendar APIを使って1年分の祝日を取得
228: * @param int $year 西暦年
229: * @param array $holidays 祝日を格納する配列
230: * @param string $url WebAPIのURL格納用
231: * @return int 格納した祝日数
232: */
233: function getHoliday_by_Google($year, &$holidays, &$url) {
234: $type = urlencode('ja.japanese#holiday@group.v.calendar.google.com');
235: $google_api_key = GOOGLE_API_KEY;
236: $start = sprintf("%04d-01-01T00:00:00Z", $year);
237: $finish = sprintf("%04d-01-01T00:00:00Z", $year + 1);
238: $url = "https://www.googleapis.com/calendar/v3/calendars/{$type}/events?key={$google_api_key}&timeMin={$start}&timeMax={$finish}&maxResults=50&orderBy=startTime&singleEvents=true";
239:
240: $cnt = 0;
241: $result = file_get_contents($url);
242: $result = json_decode($result);
243: if (! empty($result->items)) {
244: foreach ($result->items as $value) {
245: $title = (string)$value->summary;
246: $date = (string)$value->start->date;
247: $holidays[$date] = $title;
248: $cnt++;
249: }
250: }
251:
252: return $cnt;
253: }
戻り値はJSON形式であるが、PHPには関数 json_decode が組み込まれているので、これを使って、個々の祝日に分解する。
プログラムのその他の部分は、「PHPで祝日を求める」で使ったものとほぼ同じである。
参考サイト
- Google Calendar API
- PHPで祝日を求める:ぱふぅ家のホームページ

(2026年1月11日) PHP8.5対応:double→float
(2025年9月19日).pahooEnv導入