Электронная таблица Zend GData - Недопустимое значение параметра запроса для идентификатора сетки
Я пытаюсь обновить электронную таблицу Google через библиотеку Zend_Gdata. Я уверен, что идентификатор пользователя и пароль указаны правильно. Я думаю, что проблема связана с ключом электронной таблицы или идентификатором рабочего листа. Даже я не знаю точно, как получить этот лист. Пожалуйста, помогите мне в этом. Это точный URL-адрес рабочего листа m.
Вот мой код.
$user = 'xxxxxxxxxxxxxxxxxxxxxx';
$pass = 'xxxxxxxxxxxxxxxxxx';
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$spreadsheetService = new Zend_Gdata_Spreadsheets($client);
$spreadsheetKey = "0AmW1-CVeX7oOdGRkYURWNXVMRi1DTW9NTGNhZ09OTGc";
$worksheetId = "Sheet1";
try
{
$spreadsheetService->insertRow(array('Prasad','10000'),$spreadsheetKey,$worksheetId);
}
catch(Exception $error)
{
echo $error->getMessage() ;
}
И это сообщение об ошибке, которое я вижу на экране своего браузера.
Ожидаемый код ответа 200, получено 400 неверных значений параметра запроса для идентификатора сетки.
2 answers
Я исправил проблему. Я мог бы найти ключ электронной таблицы и идентификатор рабочего листа, используя приведенный ниже код.
$user = 'xxxxxxxxxxxxxxx';
$pass = 'xxxxxxxxxxxxx';
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$spreadsheetService = new Zend_Gdata_Spreadsheets($client);
$feed = $spreadsheetService->getSpreadsheetFeed();
$sheetName = "Test1";
foreach($feed->entries as $entry)
{
if($entry->title->text == $sheetName)
{
$spreadsheetURL = $entry->id;
break;
}
}
$spreadsheetKey = basename($spreadsheetURL);
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey($spreadsheetKey);
$feed = $spreadsheetService->getWorksheetFeed($query);
echo "Spreadskeet Key : $spreadsheetKey <br/>";
foreach($feed->entries as $entry)
{
echo "ID of sheet {$entry->title->text} is " . basename($entry->id) . " <br/>";
}
Как только я получил эти значения, мой скрипт также не работал. Затем я обнаружил, что когда мы определяем массив, "Ключ" должен быть указан в нижнем регистре без пробелов.
$spreadsheetService->insertRow(array('name'=>'Prasad','value'=>'10000'),$spreadsheetKey,$worksheetId);
Пожалуйста, попробуйте также этот код, протестированный и работающий для меня
<?php
// load Zend Gdata libraries
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
// set credentials for ClientLogin authentication
$user = "xxxxxxxxxxxxxxx";
$pass = "xxxxxxxxxxxxxxx";
try {
// connect to API
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata_Spreadsheets($client);
// get list of available spreadsheets
$feed = $service->getSpreadsheetFeed();
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}
foreach($feed->entries as $entry) {
$spreadsheetURL = $entry->id;
}
$spreadsheetKey = basename($spreadsheetURL);
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey($spreadsheetKey);
$feed = $service->getWorksheetFeed($query);
echo "Spreadsheet Key: <strong>$spreadsheetKey</strong> <br>";
foreach($feed as $entry) {
$sName = $entry->title->text;
echo "ID of sheet $sName is: <strong>".basename($entry->id)."</strong><br>";
}
?>