前言
在建立完config.inc.php 之後,我們來牛刀小試,把我們在Google Calendar 上面建立的事件撈出來吧。
建立事件列表
希望在首頁把所有的事件列出來,所以我們打開GClab 資料夾,在下面建立index.php。
登入Google 服務
請開啟index.php 鍵入以下程式碼:
<?php
include('config.inc.php');
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // 提供Calendar 的服務名稱
$client = Zend_Gdata_ClientLogin::getHttpClient($googleAccount, $googlePassword, $service);
$gdataCal = new Zend_Gdata_Calendar($client);
?>
第一行是把上一篇的設定檔include 進來,接下來三行是建立Client 登入Google 的服務。到這邊的已先run一下,確定一下自己帳號密碼沒有打錯。
讀取Google Calendar 上的事件
請在上述程式碼尾端加入以下程式,這裡使用getCalendarEventFeed 來讀取多個事件。
//接下來這邊就是讀取某本日曆的方法,據說最多只能列出25筆資料
$query = $gdataCal->newEventQuery();
//原始範例中setUser給的參數是'default' 這樣的話是開啟範例中$client的主日曆
//但由網頁說明中我們可指定User 來開啟任何一本日曆,例如這邊我設定成第二本日曆的ID
$query->setUser($calendarID);
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$eventFeed = $gdataCal->getCalendarEventFeed($query);
這裡值的一題的是setVisibility ,對於私有的日曆需要用private 的方式開啟,可是設成公開的日曆private 和public 都可以開;此外,setOrderby 就是讀取出來的順序,參數starttime 就是依照事件開始時間,由新到舊列出。
建立網頁呈現
請在上面程式碼?>的後面加入以下html 語法,我們要開始建立流覽畫面:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>FUNction's Lab 讀取Google 行事曆</title>
</head>
<body>
</body>
</html>
加入PHP 語法
最後一步了!在網頁中加入PHP 語法以顯示每個事件,這邊只列出事件的名稱(title)、內容(content)和地點(where)。如果要看事件的詳情,我希望點選事件標題,會由下一個網頁呈現。為了讓下一個網頁之道是哪一個事件,所以我把事件的ID 傳入。請在上述html 的<body>這裡</body>加入以下語法:
<?php值得注意的是從API 中取出的事件ID 會以一個網址方是呈現,例如http://www.google.com/calendar/feeds/default/private/full/d72ts7587anu8vgu2gsrq9bl3k 所以我用PHP 的basename() 去取得最後一個slash 後的字串。此外,地點(where)是以陣列的格式出現,所以還要再用一個foreach 去解他,有點奇怪,但我也不知道為什麼。
foreach ($eventFeed as $event) {
echo "<h2><a href=\"event.php?id=".basename($event->id->text)."\">" . $event->title->text . "</a></h2>\n";
echo "<ul>\n";
echo "\t<li><b>內容:</b>".$event->content->text."</li>\n";
foreach ($event->where as $where) {
echo "\t<li><b>地點:</b>" . $where->valueString . "</li>\n";
}
echo "</ul>\n";
}
?>
結語
今天我們已經學會把Google Calendar 上的事件撈出來了,下一篇將會介紹如何去讀取單一個事件。希望這些文章對你有幫助喔!
範例程式下載:GClab-part-2.zip
上一篇: [教學] 在PHP 中使用Google Calendar API - Part 1 環境建立
下一篇:[教學] 在PHP 中使用Google Calendar API - Part 3 檢視單一事件
讀者回應 ( 22 意見 )
訂閱張貼留言 (Atom)
您好 :)
我這幾天也在學著用php對google calendar進行操作,剛好查到您的心得:P
步驟1的config.inc.php執行後並未出現錯誤,可是步驟2的index.php就顯示無法顯示網頁了...
我到ZEND的官網看過,我也把我的code改成跟官網的一樣,不過還是不能動。
問題好像是出在
$client = Zend_Gdata_ClientLogin::getHttpClient($user,$pass,$service);
只要把這行變註解,網頁就能正常執行...
不知道您是否有遇到這樣的問題呢?