ヤマムギ

growing hard days.

*

Googleカレンダーの予定をV3 APIでPHPからJSONを取得してWebページに表示する

      2016/02/08


Googleカレンダーを使って管理しているライブスケジュールを日付によって、
未来はライブ告知、過去は終わったライブとしてWebページに表示します。

Google側の設定とキー取得

下記の順番で設定します。

設定方法は様々なサイトで紹介されていますので「Google Calendar API v3」とかで検索してください。

  1. プロジェクトの作成
  2. APIの有効化
  3. クライアントID作成
  4. 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);としています。
詳しくは下部をご参照ください。

カレンダーを取得して表示する

このカレンダーから取得しています。

そしてこちらに表示しています。
ライブ情報
過去のライブ

ライブ情報の例です。
※過去のライブは逆に今日より過去のスケジュールを取得しています。

[php]
<?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 ‘‘ . date(“Y”) . ‘年ライブ情報
‘;
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 ‘‘ . $stdateStr . ‘ ‘ . $title . ‘ @’.$where.’
‘;
echo $winf . ‘
‘;
echo $ainf . $dinf . ‘START.’ . $sttimeStr;
echo ‘
‘;
$loopcnt++;
}
}
[/php]

パラメータはこちらのオフィシャルサイトをご覧ください。

https://developers.google.com/google-apps/calendar/v3/reference/events/list


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

 - Google, PHP , ,

ad

ad

  関連記事

Google Apps ScriptでAdmin SDK Directory Serviceを使ってグループメンバー情報を出力する

GoogleAppsのGoogleGroupをメーリングリストとして使っている人 …

Chrome リモートデスクトップを使ってみる

自宅のMacをリモートで操作したい 外出用PCはWindows 8 とLinux …

chromium OS をインストールするためのUSBをMacで作る

別にChromeBookを購入するお金をけちるわけではないのですが。 chrom …

ホームページやサイトがiPhone,iPadのホーム画面に追加された時のアイコンを設定しておく

headタグでapple-touch-iconを指定 [html] [/html …

GoogleAppsScriptを使ってGmailの本文を解析してSpreadSheetにエクスポートする

GoogleAppsScriptを使ってGmailの本文を解析してSpreadS …

「Cloud Vision Api & Tensorflow勉強会」に行ってきました

「Cloud Vision Api & Tensorflow勉強会」に行 …

WordPressの記事を公開日時に関係なくソート順を変更する

PostMash Customを使う WordPressのプラグインでPostM …

ライブ配信カレンダーの設定まわり

ライブ配信のカレンダーをGoogle Apps Scriptとかで作りましたの設 …

Googleナレッジパネルの認証を受けるために申請してみた

Googleでエゴサーチしていると、ナレッジパネルなるものがあることに気づきまし …

ホームページ、自作サイトにアメブロの新着情報を掲載する

MagipieRSSを使用 なので下記サイトでダウンロード http://mag …