2

试图让这个工作变得超级沮丧。基本上这是一个站点(x10hosting.com),我不能包含zend gdata框架,所以我试图使用带有php cURL的谷歌数据API来访问它。我能做的最多的是使用以下脚本返回提供的用户名工作表列表:

<?php

// Construct an HTTP POST request
$clientlogin_url = "https://www.google.com/accounts/ClientLogin";
$clientlogin_post = array(
    "accountType" => "HOSTED_OR_GOOGLE",
    "Email" => "", //username
    "Passwd" => '',  //password
    "service" => "writely",
    "source" => "your application name"
);

// Initialize the curl object
$curl = curl_init($clientlogin_url);

// Set some options (some for SHTTP)
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// Execute
$response = curl_exec($curl);

// Get the Auth string and save it
preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches);
$auth = $matches[1];

echo "The auth string is: ".$auth;
// Include the Auth string in the headers
// Together with the API version being used
$headers = array(
    "Authorization: GoogleLogin auth=".$auth,
    "GData-Version: 3.0",
);

// Make the request
$key = ;
curl_setopt($curl, CURLOPT_URL, "https://spreadsheets1.google.com/ccc?key=$key");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);

$response = curl_exec($curl);
curl_close($curl);
var_dump($response);
// Parse the response
$response = simplexml_load_string($response);

// Output data
foreach($response->entry as $file)
{
    echo "File: " . $file->title . "<br />";
    echo "Type: " . $file->content["type"] . "<br />";
    echo "Author: " . $file->author->name . "<br /><br />";
}
?>

但我想不出一种方法来使用它来访问一个特定的工作表。请帮忙,这让我发疯了。

编辑:遵循 DASPRiD 的建议给了我这个错误->

注意: Zend_Loader::Zend_Loader::registerAutoload 自 1.8.0 起已弃用,将在 2.0.0 中删除;在第 266 行的 /home/c3webdev/public_html/library/Zend/Loader.php 中使用 Zend_Loader_Autoloader

警告:require_once(Zend/Loader/Autoloader.php) [function.require-once]:无法打开流:第 267 行的 /home/c3webdev/public_html/library/Zend/Loader.php 中没有这样的文件或目录

致命错误:require_once() [function.require]:无法打开所需的“Zend/Loader/Autoloader.php”(include_path='/home/c3webdev/public_html/library:.:/usr/lib/php:/usr/local /lib/php') 在第 267 行的 /home/c3webdev/public_html/library/Zend/Loader.php

4

3 回答 3

2

对以下 URL 的查询应列出特定电子表格的所有工作表:

http://spreadsheets.google.com/feeds/worksheets/**spreadsheetKey**/private/full

要安装和使用 Zend_Gdata,请执行以下操作:

从 Zend Framework 网站下载最后一个包 ( http://framework.zend.com/releases/ZendGdata-1.10.7/ZendGdata-1.10.7.ta​​r.gz )。现在让我们假设以下董事结构:

  • /index.php(你的主文件)
  • /library/Zend (解压 library/Zend 文件夹)

现在在您的 index.php 中,执行以下操作:

set_include_path(
    dirname(__FILE__) . '/library'
    . PATH_SEPARATOR . get_include_path()
);

require_once 'Zend/Loader.php';

Zend_Loader::registerAutoload();

现在您可以简单地按照手册进行操作(http://framework.zend.com/manual/en/zend.gdata.spreadsheets.html)。您可能对创建服务实例的主题“获取电子表格列表”和获取特定电子表格的所有工作表的“获取工作表列表”主题感兴趣。

更新:

看起来 Zend_Gdata 包没有正确打包。我会注意到要修复软件包。同时,我建议您下载完整的 Zend Framework 包。要正确使用 1.8 中的自动加载器,请改为执行以下操作:

require_once 'Zend/Loader/Autoloader.php';

Zend_Loader_Autoloader::getInstance();
于 2010-08-23T21:14:27.090 回答
0

一旦您获得了为该用户提供的工作表列表,您就可以解析以获取数据(这就是您想要的对吗?工作表数据?)

如上所述,这是您获取电子表格的方式

http://spreadsheets.google.com/feeds/worksheets/<spreadsheet-key>/private/full

然后从那里您可以获取特定电子表格的网址,然后从那里您可以从中获取数据

列表返回具有适当标题的数据

https://spreadsheets.google.com/feeds/list/<spreadsheet-key>/<worksheet-id>/private/basic

Cells 使用定义的单元格(A1、C23 等)返回它

https://spreadsheets.google.com/feeds/cells/0<spreadsheet-key>/<worksheet-id>/private/basic

这是有关google 电子表格 api参考的更多信息

于 2010-08-30T13:43:17.013 回答
0

对于没有 Zend 和没有 Google API的非常简单的替代解决方案,这也可能有所帮助。

您可以在网络上将您的 Google 电子表格发布为 csv(带有私有 URL),然后通过fopen/fgetcsv简单地访问它:

https://stackoverflow.com/a/18106727/1300348

请注意,没有身份验证...因此,拥有您的网址的人拥有您的数据,因此对于包含密码的文件,这可能不是正确的解决方案。但也许它可以帮助有类似问题的人。

于 2013-08-07T15:03:11.613 回答