Zend Gdata libを使用せずにPHPの非公開のGoogleスプレッドシートにデータを保存するにはどうすればよいですか?スクリプトを実行しているphpサーバーはphpv。5.0.4であるため、Googleチュートリアルに示されているように、Zendライブラリを使用できません。cUrlを使用して解決策を見つけようとしましたが、docが非公開の場合の認証の問題を省略できません。どうすればいいですか?誰かがそれを試みた場合は、解決策を共有してください。
3 に答える
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);
最も完璧な解決策ではないかもしれませんが、うまくいきます。:)
これは、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 メソッドに渡される連想配列のキーは、データの収集に使用しているスプレッドシートの列ヘッダーと一致する必要があります。
通常の HTTP リクエストを使用して GData API にアクセスできます。ライブラリを使用すると、これが簡単になります。基本的に、使用したいライブラリのビットを書き換えるだけです。
プロトコルのドキュメントを参照してください。