2012-02-06 23 views
3

我想通過Zend_GData庫更新谷歌電子表格。我確定用戶名和密碼是正確的。我認爲問題出在電子表格密鑰或工作表ID上。即使我不知道如何獲得此工作表ID。請幫助我。這是m工作表的確切網址。Zend_GData電子表格 - 無效的網格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無效grid-id的查詢參數值。

回答

5

我修正了這個問題。我可以通過使用下面的代碼找到SpreadsheetKey和WorkSheetID。

$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/>"; 
} 

一旦我得到這些值,我的腳本也沒有工作。然後我發現當我們定義數組的時候,'Key'應該在小寫中沒有提及空格。

$spreadsheetService->insertRow(array('name'=>'Prasad','value'=>'10000'),$spreadsheetKey,$worksheetId); 
+1

感謝您發佈您的答案。幫了我一噸。 – 2012-05-09 04:11:59

+0

祝你好運...聽到它很有用,很有用。 – 2012-05-09 15:08:14

+1

這仍然是開始使用Zend Framework的最佳解決方案,因爲任何其他初學者指南都只是過於複雜。感謝您的腳本! – Laci 2014-05-13 07:20:58

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>"; 
} 
?>