Как сохранить данные в непубличной электронной таблице Google с помощью PHP без библиотеки Zend Gdata?
Как я могу сохранить данные в непубличной электронной таблице Google на PHP без использования библиотеки Zend Gdata ? Я не могу использовать библиотеки Zend, как показано в учебниках Google, потому что php-сервер, на котором я запускаю скрипт, php v.5.0.4. Я пытался найти решение с помощью cUrl, но я не могу пропустить проблему с аутентификацией, когда doc не является общедоступным. Как я могу это сделать? Если кто-то пытался это сделать, пожалуйста, поделитесь решением.
3 answers
Я нашел решение, используя curl и создав форму для электронной таблицы Google. Для подготовленной электронной таблицы вам необходимо создать форму без опций: Требуется войти в систему для просмотра этой формы и Автоматически собирать имя пользователя респондента . Затем проверьте, используя, например, firebug, форму post uri и данные post и используйте ее для следующего сценария:
#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);
Возможно, это не самое идеальное решение, но оно работает. :)
Вот объектно-ориентированный класс php для отправки данных в электронную таблицу Google Docs - http://code.google.com/p/php-form-builder-class/source/browse/trunk/includes/class.spreadsheet.php?spec=svn384&r=384
CURL используется вместо библиотеки GData Zend. Вы можете найти пример реализации ниже. Не забудьте заменить настройки теста ("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);
Ключи ассоциативного массива переданы для метода добавления необходимо сопоставить заголовки столбцов электронных таблиц, которые вы используете для сбора данных.