2009-12-15 88 views
3

我有這個代碼正在工作,加載谷歌電子表格並從中加載一些數據。如果有問題的電子表格是公開的,我如何修改代碼以不需要用戶名/密碼?對公共電子表格使用Zend_Gdata_Spreadsheets?

$key="keytothespreadsheet"; 
$user="[email protected]"; 
$pass="*****"; 

$authService = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME; 
$httpClient = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $authService); 
$gdClient = new Zend_Gdata_Spreadsheets($httpClient); 
$query = new Zend_Gdata_Spreadsheets_DocumentQuery(); 
$query->setSpreadsheetKey($key); 
$feed = $gdClient->getWorksheetFeed($query); 
print_r($feed); 

回答

2

在以下行中,HTTP客戶端是可選的:

$gdClient = new Zend_Gdata_Spreadsheets($httpClient); 


所以,只是不通過。以下是等效的:

$gdClient = new Zend_Gdata_Spreadsheets(); 
// or 
$gdClient = new Zend_Gdata_Spreadsheets(null); 
// or 
$gdClient = new Zend_Gdata_Spreadsheets(new Zend_Http_Client()); 
0

與@Matt一樣,我想在不提供憑據的情況下訪問公共電子表格。感謝@Derek Illchuk,我獲得了部分途徑。它仍然沒有工作但是,直到我學會了以下內容:

  1. 注意,文件>發佈到Web功能是不一樣的東西共享設置>公共WEB上。如果您忘記啓用「發佈到網絡」,則會出現此錯誤:「預期響應代碼200,得到400無法找到此URL處的電子表格。請確保您擁有正確的URL,並且擁有者的電子表格並沒有刪除它。「

  2. 在「發佈到Web」的設置,一定要取消選中「要求觀衆與他們_ __帳戶登錄。」。否則,你會得到這個錯誤:「預期的響應代碼200,得到403你沒有對電子表格的查看權限,請確保你的身份驗證正確。」

  3. 根據Google's documentation,「電子表格Feed只支持'私人'可見性和'完整'投影。」但是,我發現我需要指定「公共」可見性和「基本」投影。否則,我得到這個錯誤: 「預期的響應代碼200,得到501這種類型的操作投影不好或不支持。」

這裏是我工作:

$spreadsheetService = new Zend_Gdata_Spreadsheets(null); 
    $query = new Zend_Gdata_Spreadsheets_CellQuery(); 
    $query->setSpreadsheetKey($spreadsheetKey); 
    $query->setWorksheetId($worksheetId); 
    $query->setVisibility('public'); //options are 'private' or 'public' 
    $query->setProjection('basic'); //options are 'full' or 'basic' 
    $cellFeed = $spreadsheetService->getCellFeed($query); 

    foreach ($cellFeed as $cellEntry) { 
     $text = $cellEntry->content->text; 
     //Do something 
     break; //I only wanted the first cell (R1C1). 
    }