3

我有这段代码正在工作,可以加载谷歌电子表格并从中加载一些数据。如果有问题的电子表格是公开的,我如何修改代码以不需要用户名/密码?

$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);
4

2 回答 2

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());
于 2009-12-15T14:24:31.467 回答
0

像@Matt 一样,我想在不提供凭据的情况下访问公共电子表格。感谢@Derek Illchuk,我成功了。但是,在我了解到以下内容之前,它仍然无法正常工作:

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

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

  3. 根据Google 的文档,“电子表格提要仅支持‘私人’可见性和‘完整’投影。” 但是,我发现我需要指定“公共”可见性和“基本”投影。否则我得到这个错误: “预期响应代码 200,得到 501 Bad or unsupported projection for this type of operation。”

这对我有用:

    $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).
    }
于 2013-06-21T21:22:43.323 回答