2012-02-06 2 views
3

Я пытаюсь обновить электронную таблицу google через библиотеку Zend_GData. Я уверен, что идентификатор пользователя и пароль верны. Я думаю, что проблема связана с ключом или листом таблицы. Даже я точно не знаю, как получить этот рабочий лист. Пожалуйста, помогите мне в этом. Это точный URL-адрес рабочего листа.Zend_GData Spreadsheet - Недопустимое значение параметра запроса для grid-id

https://docs.google.com/spreadsheet/ccc?key=0AmW1-CVeX7oOdGRkYURWNXVMRi1DTW9NTGNhZ09OTGc&hl=en_US#gid=0

Вот мой код.

$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 Недопустимое значение параметра запроса для идентификатора сетки.

ответ

5

Я исправил проблему. Я могу найти таблицу и таблицу рабочих таблиц с помощью следующего кода.

$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); 
+1

Спасибо за размещение ответа. Помог мне тонну. –

+0

Удачи ... Рад слышать, что это было полезно. –

+1

Это все еще лучшее решение для начинающих с Zend Framework, так как любые другие руководства для новичков просто сложнее. Спасибо за этот скрипт! – Laci

0

Пожалуйста, попробуйте этот код также, протестирована и работал для меня

<?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>"; 
} 
?> 
Смежные вопросы