我有这个代码正在运行,加载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);
答案 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,我参与其中。然而,在我学会以下内容之前,它仍然无效:
请注意文件>发布到网络功能与共享设置>不同。公开在网上。如果您忘记启用“发布到网络”,您将收到以下错误:“预期响应代码200,获得400无法找到此网址的电子表格。请确保您拥有正确的网址电子表格的所有者尚未将其删除。“
在“发布到网络”设置中,请务必取消选中“要求观看者使用 _ __ 帐户登录”。否则您将收到此错误:“预期响应代码200,获得403您没有对电子表格的查看权限。请确保您已经过适当的身份验证。”
根据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).
}