2009-12-15 134 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). 
    }