3

我正在尝试通过 Zend_GData 库更新谷歌电子表格。我确定用户 ID 和密码是正确的。我认为问题出在电子表格键或工作表 ID 上。即使我不确切知道如何获取此工作表ID。请帮助我。这是 m 工作表的确切 URL。

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 网格 ID 的无效查询参数值。

4

2 回答 2

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's 应该以小写形式提及,没有空格。

$spreadsheetService->insertRow(array('name'=>'Prasad','value'=>'10000'),$spreadsheetKey,$worksheetId);
于 2012-02-06T10:40:35.897 回答
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>";
}
?>
于 2012-06-27T19:22:39.627 回答