2011-09-17 13 views
4

Zend Gdata 1.11ライブラリを使用してGoogleスプレッドシートに行を挿入するのが最も簡単なシナリオを試しています。スプレッドシートにセルA1に「コロナ」という単語があります。 は、ここで全体のPHPファイルです。それは、スプレッドシートを反復処理し、私がログインしてアクセス権を持っているんだということを意味し、名前とIDを書き込みZend Gdataを使用してGoogleスプレッドシートに行を挿入できません

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

私は間違っていますか?特定の方法でスプレッドシートを作成する必要がありますか... ...

答えて

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

明らかに、列名は空白を含まない小文字で指定する必要があります。私はGoogleのスプレッドシートに "Kolona"を置くことができます。ちょうどコード内に小文字を使用する必要があります。

「My Column 2」という名前の列がある場合、配列には「mycolumn2」が必要です。

+0

Googleがhttps://developers.google.com/google-apps/spreadsheets/#adding_a_list_rowにこのどこかに言及する必要があります –

+1

また、アンダースコアを廃棄しなければならないことが表示されます。 –

0

私は配列にスペースがあるために発生した同様の問題を抱えていました。スペースを削除し、私を助けた:

$rowData = array('kolona' => 'smurf'); - your code 
$rowData = array('kolona'=>'smurf'); - my code 
関連する問題