4

Zend Gdata libを使用せずにPHPの非公開のGoogleスプレッドシートにデータを保存するにはどうすればよいですか?スクリプトを実行しているphpサーバーはphpv。5.0.4であるため、Googleチュートリアルに示されているように、Zendライブラリを使用できません。cUrlを使用して解決策を見つけようとしましたが、docが非公開の場合の認証の問題を省略できません。どうすればいいですか?誰かがそれを試みた場合は、解決策を共有してください。

4

3 に答える 3

5

curl を使用し、Google のスプレッドシート用のフォームを作成することで解決策を見つけました。準備されたスプレッドシートの場合、オプションなしでフォームを作成する必要があります:このフォームを表示するにはサインインが必要で、回答者のユーザー名を自動的に収集します。次に、fe firebug を使用してフォーム post uri と post data を確認し、次のスクリプトに使用します。

#prepare post data
$fields = array('backupCache' => '',
            'entry.0.single'=>urlencode($data['name']),
            'entry.1.single'=>urlencode($data['surname']),
            'pageNumber'=>urlencode(0),   
            'submit'=>'Submit');
$fields_string = '';

foreach($fields as $key=>$value) {
  $fields_string .= $key.'='.$value.'&';
}

rtrim($fields_string,"& ");
$fields_string = substr($fields_string, 0, strlen($fields_string)-1);

$ch = curl_init();
#set curl_setopt for your preferences
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);    
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);    

curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);

#set proper form uri
curl_setopt($ch, CURLOPT_URL, $formUri);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);

$res = curl_exec($ch);
curl_close($ch);

最も完璧な解決策ではないかもしれませんが、うまくいきます。:)

于 2009-10-07T15:26:02.283 に答える
2

これは、Google ドキュメントのスプレッドシートにデータを送信するためのオブジェクト指向の php クラスです - http://code.google.com/p/php-form-b ​​uilder-class/source/browse/trunk/includes/class.spreadsheet.php ?spec=svn384&r=384

Zend の GData lib の代わりに cUrl が使用されます。以下に実装例を示します。テスト設定 (「my_google_email」、「my_google_password」など) を特定の情報に置き換えることを忘れないでください。

$doc = new spreadsheet();
$doc->authenticate("my_google_email", "my_google_password");
$doc->setSpreadsheet("my_spreadsheet_title");
$doc->setWorksheet("my_worksheet_title");
$my_data = array("First Name" => "John", "Last Name" => "Doe");
$doc->add($my_data);

add メソッドに渡される連想配列のキーは、データの収集に使用しているスプレッドシートの列ヘッダーと一致する必要があります。

于 2010-09-28T03:02:47.717 に答える
0

通常の HTTP リクエストを使用して GData API にアクセスできます。ライブラリを使用すると、これが簡単になります。基本的に、使用したいライブラリのビットを書き換えるだけです。

プロトコルのドキュメントを参照してください。

于 2009-10-06T13:22:40.380 に答える