使用PHP和Google Docs API将表单数据保存到Google电子表格时出错

使用PHP和Google Docs API将表单数据保存到Google电子表格时出错,php,zend-framework,google-docs-api,google-spreadsheet-api,Php,Zend Framework,Google Docs Api,Google Spreadsheet Api,我需要将html表单/调查的结果发布到google docs电子表格中。现在,我正在使用api尝试最简单的场景,这只是在我的电子表格中写入一个简单的行,尽管我一直收到一个错误。 (我对php不是很在行,所以请容忍我!) 代码: 无标题文件 错误: > Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with > message 'Expected response code 200, got 401 &

我需要将html表单/调查的结果发布到google docs电子表格中。现在,我正在使用api尝试最简单的场景,这只是在我的电子表格中写入一个简单的行,尽管我一直收到一个错误。 (我对php不是很在行,所以请容忍我!)

代码:


无标题文件
错误:

> Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with
> message 'Expected response code 200, got 401 <HTML> <HEAD>
> <TITLE>Token invalid</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"
> TEXT="#000000"> <H1>Token invalid</H1> <H2>Error 401</H2> </BODY>
> </HTML> ' in
> C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php:714 Stack
> trace: #0
> C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata.php(219):
> Zend_Gdata_App->performHttpRequest('GET', 'https://spreads...', Array,
> NULL, NULL, NULL) #1
> C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php(880):
> Zend_Gdata->performHttpRequest('GET', 'https://spreads...', Array) #2
> C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php(768):
> Zend_Gdata_App->get('https://spreads...', NULL) #3
> C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php(210):
> Zend_Gdata_App->importUrl('https://spreads...', 'Zend_Gdata_Spre...',
> NULL) #4 C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata.php(162):
> Zend_Gdata_App->getFeed('https://spreads...', 'Zend_Gdata_Spre...') #5
> C:\xa in C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php
> on line 714
>致命错误:未捕获异常“Zend\u Gdata\u App\u HttpException”与
>消息“预期响应代码200,获得401”
>令牌无效文本=“#000000”>令牌无效错误401
>“在
>C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php:714堆栈
>跟踪:#0
>C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata.php(219):
>Zend_Gdata_应用程序->performHttpRequest('GET','https://spreads...,数组,
>空,空,空)#1
>C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php(880):
>Zend_Gdata->performHttpRequest('GET','https://spreads...“,数组)#2
>C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php(768):
>Zend_Gdata_应用程序->获取https://spreads...“,空)#3
>C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php(210):
>Zend_Gdata_应用程序->导入https://spreads...“Zend_Gdata_Spre…”,
>NULL)#4 C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata.php(162):
>Zend_Gdata_应用程序->getFeed('https://spreads...“,“Zend_Gdata_Spre…”)#5
>C:\xampp\htdocs\zendgddata-1.12.1\library\Zend\Gdata\App.php中的C:\xa
>在线714

感谢您的帮助!:]

我已经有一段时间没有处理这个问题了,但我相信您看到的特定错误消息与您使用的服务名称有关
'xapi'
是谷歌服务的通用服务名称,但您正试图专门访问谷歌电子表格

尝试更改:

$service = 'xapi';
致:


因为
'wise'
对于Google电子表格来说是正确的。

我已经有一段时间没有处理过这个问题了,但我相信您看到的具体错误消息与您使用的服务名称有关
'xapi'
是谷歌服务的通用服务名称,但您正试图专门访问谷歌电子表格

尝试更改:

$service = 'xapi';
致:


因为
'wise'
对于Google电子表格是正确的。

您的错误消息引用了无效的令牌,这意味着Google不接受您的登录。我认为错误在
$service
行中。试试这个:

$user = //user name @ gmail here
$pass = //password here
$sheet = //spreadsheet id/key here
$worksheet = "od6";

require_once('Zend/Loader.php');
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
Zend_Loader::loadClass('Zend_Http_Client');

$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$spreadsheetService = new Zend_Gdata_Spreadsheets($client);
那么你所要做的就是:

$rowData = array("column1"=>"blah", "column2"=>"blah"); //replace column1 and column2 with your actual column names and replace blah with the information you want to add
$insertedListEntry = $spreadsheetService->insertRow($rowData,
                                                    $spreadsheetKey,
                                                    $worksheetId);

您的错误消息引用了无效令牌,这意味着Google不接受您的登录。我认为错误在
$service
行中。试试这个:

$user = //user name @ gmail here
$pass = //password here
$sheet = //spreadsheet id/key here
$worksheet = "od6";

require_once('Zend/Loader.php');
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
Zend_Loader::loadClass('Zend_Http_Client');

$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$spreadsheetService = new Zend_Gdata_Spreadsheets($client);
那么你所要做的就是:

$rowData = array("column1"=>"blah", "column2"=>"blah"); //replace column1 and column2 with your actual column names and replace blah with the information you want to add
$insertedListEntry = $spreadsheetService->insertRow($rowData,
                                                    $spreadsheetKey,
                                                    $worksheetId);

太糟糕了,你不能用谷歌文档表单来减轻自己的头痛。太糟糕了,你不能用谷歌文档表单来减轻自己的头痛。我试过了,但还是出现了一个错误。“未捕获的异常“Zend_Gdata_App_HttpException”,消息为“预期响应代码200,获得400我们';很抱歉,发生了服务器错误。请稍等,然后尝试重新加载电子表格。”在C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php:714中,“我尝试了,但仍然出现错误。”。“未捕获的异常“Zend_Gdata_App_HttpException”,消息为“预期响应代码200,获得400我们';很抱歉,发生了服务器错误。请稍等,然后尝试重新加载电子表格。”在C:\xampp\htdocs\ZendGdata-1.12.1\library\Zend\Gdata\App.php:714中,“这实际上消除了我的错误!”!但我现在明白了:
“标题:我的电子表格-Id:spreadsheets.google.com/feeds/spreadsheets/xxxxxxxxxappgzpkza错误:很抱歉,发生了服务器错误。请稍等,然后尝试重新加载电子表格。”
知道这是什么吗?有时候,这可能真的是谷歌端的一个间歇性服务器错误——在谷歌群中闲逛会发现很多人抱怨这个错误,结果回来说问题自行解决了,他们没有更改代码。我知道,如果脚本中的列名与电子表格中的实际列名有任何不同,您也可以看到该错误。但不幸的是,这对我来说越来越陌生,因此希望更熟悉API的人能从现在起提供更多帮助。:)非常感谢。实际上,我只是没有意识到我必须首先在实际的电子表格中添加一个列名作为“标签”。我给A1加了一个名字,它就像一个符咒。这实际上消除了我的错误!但我现在明白了:
“标题:我的电子表格-Id:spreadsheets.google.com/feeds/spreadsheets/xxxxxxxxxappgzpkza错误:很抱歉,发生了服务器错误。请稍等,然后尝试重新加载电子表格。”
知道这是什么吗?有时候,这可能真的是谷歌端的一个间歇性服务器错误——在谷歌群中闲逛会发现很多人抱怨这个错误,结果回来说问题自行解决了,他们没有更改代码。我知道,如果脚本中的列名与电子表格中的实际列名有任何不同,您也可以看到该错误。但不幸的是,这对我来说越来越陌生,因此希望更熟悉API的人能从现在起提供更多帮助。:)非常感谢。实际上,我只是没有意识到我必须首先在实际的电子表格中添加一个列名作为“标签”。我给A1加了一个名字,它就像一个符咒。