Ошибка при вставке строки в электронную таблицу Google с помощью Zend Gdata

Я пробую самый простой сценарий для вставки строки в электронную таблицу Google с использованием библиотеки Zend Gdata 1.11. Таблица содержит слово «Колона» в ячейке A1. Вот весь php файл:

<?php
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

$user = "xxxx";
$pass = "xxxx";
$service = 'wise';

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service, null, Zend_Gdata_ClientLogin::DEFAULT_SOURCE, null, null, Zend_Gdata_ClientLogin::CLIENTLOGIN_URI, 'GOOGLE');

$spreadsheetService = new Zend_Gdata_Spreadsheets($client);

$feed = $spreadsheetService->getSpreadsheetFeed();

foreach ($feed as $entry) {
echo 'Title: ' . $entry->title . ' - ';
echo 'Id: ' . $entry->id . '<br />';
}
$rowData = array('Kolona' => 'smurf');

$spreadsheetKey = 'xxxx';
$worksheetId = 'xxx';

try{
$insertedListEntry = $spreadsheetService->insertRow($rowData,
                                                    $spreadsheetKey,
                                                    $worksheetId);
}
catch(Zend_Gdata_App_HttpException $exception) {  
    echo "Error: " . $exception->getResponse()->getRawBody();  
} 
?>
</body>
</html>

Он выполняет итерацию электронных таблиц и записывает имена и идентификаторы, что означает, что я вошел в систему и имею доступ, но когда дело доходит до вставки строки, я получаю сообщение об ошибке: «К сожалению, произошла ошибка сервера. Подождите и попробуйте перезагрузить электронную таблицу. . "

Full error is: "Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 400 We&#39;re sorry, a server error has occurred. Please wait and try reloading your spreadsheet.' in C:\wamp\www\ks\gdata\ZendGdata-1.11.10\library\Zend\Gdata\App.php:709 Stack trace: #0 C:\wamp\www\ks\gdata\ZendGdata-1.11.10\library\Zend\Gdata.php(219): Zend_Gdata_App->performHttpRequest('POST', 'https://spreads...', Array, '<atom:entry xml...', 'application/ato...', NULL) #1 C:\wamp\www\ks\gdata\ZendGdata-1.11.10\library\Zend\Gdata\App.php(900): Zend_Gdata->performHttpRequest('POST', 'https://spreads...', Array, '<atom:entry xml...', 'application/ato...') #2 C:\wamp\www\ks\gdata\ZendGdata-1.11.10\library\Zend\Gdata\App.php(975): Zend_Gdata_App->post('<atom:entry xml...', 'https://spreads...', NULL, NULL, Array) #3 C:\wamp\www\ks\gdata\ZendGdata-1.11.10\library\Zend\Gdata\Spreadsheets.php(336): Zend_Gdata_App->insertEntry('<atom:entry xml...', 'https://spreads...', 'Zend_Gdata_Spre...') #4 C:\wamp\www\ks\gdata\gs in C:\wamp\www\ks\gdata\ZendGdata-1.11.10\library\Zend\Gdata\App.php on line 709"

Что я делаю неправильно? Должен ли я создать электронную таблицу определенным образом или что-то в этом роде ...?


person Milan    schedule 17.09.2011    source источник


Ответы (2)


$rowData = array('Kolona' => 'smurf'); - wrong
$rowData = array('kolona' => 'smurf'); - correct

Очевидно, что имена столбцов нужно указывать маленькими буквами и без пробелов. Я могу сохранить «Колону» в электронной таблице Google, просто нужно использовать строчные буквы в коде.

Если бы у меня был столбец с именем «Мой столбец 2», в массиве он должен быть «mycolumn2».

person Milan    schedule 19.09.2011

У меня была аналогичная проблема, которая возникла из-за наличия пробелов в массиве. Удаление пробелов мне помогло:

$rowData = array('kolona' => 'smurf'); - your code
$rowData = array('kolona'=>'smurf'); - my code
person user2690236    schedule 13.02.2015