Googleカレンダーの予定をPHPからXMLで取得してWebページに表示する(現在廃止されたAPIなので使えません)
2016/02/07
目次
ご注意
※下記の記事で使用していたAPIは2016年現在使用出来なくなっています。
今は、V3 Calendar APIで取得する必要がありますので、改めて記事を上げ直します。
この記事は昔はこうしてました、というようなアーカイブ記事の位置づけとして読んでいただければ幸いです。
V3 Calendar APIで取得している記事はこちらです。
Googleカレンダーの予定をV3 APIでPHPからJSONを取得してWebページに表示する
本文
5年前ぐらいに作ったWebサイトで、管理者がGoogleカレンダーなら更新出来るって事で、それを表示するようにした事を思い出したので備忘録。
GoogleカレンダーにXML形式でアクセスする
フィードURLを生成する。
[php]
$calId = "<カレンダーIDの@より前>%40group.calendar.google.com";
$feedURL = "http://www.google.com/calendar/feeds/$calId/public/basic?futureevents=true&orderby=starttime&sortorder=ascending";
[/php]
カレンダーIDはGoogleカレンダーの詳細ページで確認する。
ついでにGoogleカレンダーは共有設定で閲覧権限で一般公開しておく。
@マークは一応%40にエンコードする。
※2014/12/13 「full」が使えなくなっていたので「basic」に変更。
- futureevents — 活動予定などであれば、未来のスケジュールのみを取得するのでtrue
- orderby — ソート項目。開始日時順にする。
- sortorder — 昇順(ascending)、降順(descending )の指定。
ちなみに活動記録などで過去のみを取得する場合は「start-max=date(“Y-m-d”) . ‘T00:00:00’」のようにstart-maxパラメータを使う。
これにより、データを修正する事なく、日付が変われば、自動で活動予定ページから活動記録ページへ情報が遷移する。
サークルの活動スケジュールと記録や、バンドのライブ予定と記録なんかに使えるのではと思っとります。
XMLを処理する
[php]
$sxml = simplexml_load_file($feedURL);
foreach ($sxml->entry as $entry) {
$title = stripslashes($entry -> title);
$content = stripslashes($entry -> content);
echo ‘<span class="xxxx">’ $title . ‘<br/>’ . $content . ‘</span>’;
}
[/php]
- 予定のタイトル — $entry -> title
場所 — $entry -> children(‘gd’, true) -> where -> attributes() -> valueString- 説明 — $entry -> content
開始日時 — $entry -> children(‘gd’, true) -> when -> attributes() -> startTime
ざっくりとしとりますが、以上です。
※2014/12/13 「full」を「basic」に変更したため、タイトル(title)以外が全てcontentに含まれたので、そのままで使うか、文字列を処理してなんとか値を取るしかなさそう。
contentの例:
期間: 2015/01/17 (土) 18:00~22:00
JST<br />
<br />場所: xxxxxxx
<br />予定のステータス: 確定
<br />予定の説明: xxxxxxxxxxxxxxxxx
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Googleカレンダーの予定をV3 APIでPHPからJSONを取得してWebページに表示する
Googleカレンダーを使って管理しているライブスケジュールを日付によって、 未 …
-
-
自転車でナビ+記録出来るアプリ+ホルダー+バッテリー試してみた
目的 記録を蓄積して振り返りやる気を継続する 飽きないように単調にならないように …
-
-
Linux Mint 17 MATE 64bit にAptana Studio 3をインストールして日本語化
JDKのインストール 過去記事「Linux Mint 17 MATE 64bit …
-
-
Windows 8 にnode.js + mongodb 環境を作る
node.jsインストール nodejs.orgサイトで「INSTALL」ボタン …
-
-
Google Apps ScriptでAdmin SDK Directory Serviceを使ってグループメンバー情報を出力する
GoogleAppsのGoogleGroupをメーリングリストとして使っている人 …
-
-
RedmineにGoogleAppsアカウントでログイン出来るようにする
RedmineのログインをGoogleアカウントで出来るように[redmine_ …
-
-
ホームページ、自作サイトにアメブロの新着情報を掲載する
MagipieRSSを使用 なので下記サイトでダウンロード http://mag …
-
-
GoogleAppsScriptを使ってGmailの本文を解析してSpreadSheetにエクスポートする
GoogleAppsScriptを使ってGmailの本文を解析してSpreadS …
-
-
スパムリファラーサイトのアクセスをAnalyticsで除外する(2017/8/17現在)
アクセス数とかそんなに気にしないのですが。 嘘です。 リファラーサイトからのアク …
-
-
WordPressにログインを強制して記事ごとのアクセス制限もする
WordPressを限定された組織内で使いたいとした場合に下記を実現したいと思い …