将Zend_Gdata_Spreadsheets用于公共电子表格?

时间:2009-12-15 05:50:05

标签: zend-framework gdata-api gdata google-sheets

我有这个代码正在运行,加载Google电子表格并从中加载一些数据。如果相关电子表格是公开的,我如何修改代码以不需要用户名/密码?

$key="keytothespreadsheet";
$user="test@example.com";
$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 个答案:

答案 0 :(得分: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());

答案 1 :(得分:0)

与@Matt一样,我想在不提供凭据的情况下访问公共电子表格。感谢@Derek Illchuk,我参与其中。然而,在我学会以下内容之前,它仍然无效:

  1. 请注意文件>发布到网络功能与共享设置>不同。公开在网上。如果您忘记启用“发布到网络”,您将收到以下错误:“预期响应代码200,获得400无法找到此网址的电子表格。请确保您拥有正确的网址电子表格的所有者尚未将其删除。“

  2. 在“发布到网络”设置中,请务必取消选中“要求观看者使用 _ __ 帐户登录”。否则您将收到此错误:“预期响应代码200,获得403您没有对电子表格的查看权限。请确保您已经过适当的身份验证。”

  3. 根据Google's documentation,“电子表格Feed仅支持'私人'展示次数和'完整'预测。”但是,我发现我需要指定“公共”可见性和“基本”投影。否则我收到此错误: “预期的响应代码200,此类操作得到501错误或不支持的投影。”

  4. 这对我有用:

        $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).
        }