Googleカレンダーの予定をV3 APIでPHPからJSONを取得してWebページに表示する
2020/09/07
Googleカレンダーを使って管理しているライブスケジュールを日付によって、
未来はライブ告知、過去は終わったライブとしてWebページに表示します。
目次
Google側の設定とキー取得
下記の順番で設定します。
設定方法は様々なサイトで紹介されていますので「Google Calendar API v3」とかで検索してください。
- プロジェクトの作成
- APIの有効化
- クライアントID作成
- APIキー取得
Pear HTTPライブラリの準備
今回は共用レンタルサーバー上で実装しなければならず、HTTP RequestやHTTP Clientをインストール出来なかったので、ダウンロードしてからFTP経由で配置しています。
配置したライブラリ
- Pear.php
- HTTP/Request.php
- HTTP/Client.php
- Net/Socket.php
- Net/URL.php
Pear ダウンロードサイトでPackage検索でそれぞれ探してダウンロードしました。
ライブラリの配置先にパスを通す
レンタルサーバーなので実行時にパスを通す必要があります。
なので、set_include_path(get_include_path() . PATH_SEPARATOR . $path);としています。
詳しくは下部をご参照ください。
カレンダーを取得して表示する
このカレンダーから取得しています。
ライブ情報の例です。
※過去のライブは逆に今日より過去のスケジュールを取得しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<?php $path = '/originalpath/lib/'; set_include_path(get_include_path() . PATH_SEPARATOR . $path); require_once('HTTP/Request.php'); require_once('HTTP/Client.php'); function getLiveSched($dist) { $calId = "(カレンダーID)"; $apiKey = "(API key)"; $start = date("Y-m-d")."T".date("H:i:s")."Z"; $client = new HTTP_Client(); $client->get('https://www.googleapis.com/calendar/v3/calendars/' . $calId . '/events', array( 'key' => $apiKey, 'timeMin' => $start, 'orderBy' => 'startTime', 'singleEvents' => 'true' )); $response = $client->currentResponse(); $results = json_decode($response['body']); $loopcnt = 1; foreach ($results->items as $item){ if ($loopcnt == 1) { switch($dist) { case 0 : echo '<span class="live_infomation">' . date("Y") . '年ライブ情報</span><br/>'; break; case 1 : break; } } $title = (string) $item->summary; $content = (string) $item->description; $startDateTime = strtotime($item->start->dateTime); $stdateStr = date('Y/m/d', (int)$startDateTime); $sttimeStr = date('H:i', (int)$startDateTime); $where = (string) $item->location; $wpos = strpos($content, '[with]'); $apos = strpos($content, '[ADV]'); $dpos = strpos($content, '[DOOR]'); $winf = 'w/' . substr($content, $wpos + 6, $apos - $wpos - 6); $ainf = 'ADV.' . substr($content, $apos + 5, $dpos - $apos - 5) . ' '; $dinf = 'DOOR.' . substr($content, $dpos + 6) . ' '; echo '<a href="live.php"><span class="info">' . $stdateStr . ' ' . $title . '</a> @'.$where.'<br />'; echo $winf . '<br/>'; echo $ainf . $dinf . 'START.' . $sttimeStr; echo '<br/>'; $loopcnt++; } } |
パラメータはこちらのオフィシャルサイトをご覧ください。
https://developers.google.com/google-apps/calendar/v3/reference/events/list
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2023/01/9784815617929-1-407x596.jpg)
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
![](https://www.sbcr.jp/wp-content/uploads/2024/01/9784815625382-3-420x596.jpg)
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
![](https://www.shuwasystem.co.jp//images/book/637791.jpg)
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
![](https://book.mynavi.jp/files/topics/135344_ext_06_0.jpg?v=1673514682)
「AWSではじめるLinux入門ガイド」という本を書きました。
![](https://www.yamamanx.com/wp-content/uploads/2023/12/81Rp5O9We6L._SY522_.jpg)
![@yamamanx](https://www.yamamanx.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
PHP 共通ヘッダ、フッタの内容をページによって動的に変更する
共通ヘッダ、フッタ それぞれ必要な内容を書いたheader.php、footer …
-
-
WordPressにログインを強制して記事ごとのアクセス制限もする
WordPressを限定された組織内で使いたいとした場合に下記を実現したいと思い …
-
-
動画間の広告を飛ばすのが面倒になったのでYoutube Premiumに加入しました
テレビのCMは全然見る方なんですが、Youtubeの動画の間の広告ってなんか流し …
-
-
ホームページ、自作サイトにアメブロの新着情報を掲載する
MagipieRSSを使用 なので下記サイトでダウンロード http://mag …
-
-
Google Apps ScriptでAdmin SDK Directory Serviceを使ってユーザの最終ログイン情報一覧を出力する
GoogleAppsで使わなくなったアカウントを確認する方法として、最終ログイン …
-
-
RedmineにGoogleAppsアカウントでログイン出来るようにする
RedmineのログインをGoogleアカウントで出来るように[redmine_ …
-
-
Amazon Linux 上のWordPress PHPを5.3から7.2にバージョンアップ
このブログ、振り返ってみてみると、もう4年も続けているのかあと思いました。 1本 …
-
-
Googleカレンダーの予定をPHPからXMLで取得してWebページに表示する(現在廃止されたAPIなので使えません)
ご注意 ※下記の記事で使用していたAPIは2016年現在使用出来なくなっています …
-
-
Redmine 3.0.0 のメールサーバーでGoogleApps SMTPサーバーを利用する
Redmineのメール通知サーバーとしてGoogleAppsを使用する方法です。 …
-
-
共有Googleカレンダーを自分のカレンダーに追加してiPhoneに同期する
配信ライブカレンダーという共有カレンダーを作りました。 このようなGoogleの …