Нужна помощь: Чтение моей электронной таблицы Google, сохранение ее в тайне


Очень расстраиваюсь, пытаясь заставить это работать. В основном это для сайта (x10hosting.com ) где я не могу включить фреймворк zend gdata, поэтому я пытаюсь использовать API данных Google с php cURL для доступа к нему. Самое большее, что я смог сделать, это вернуть список предоставленных таблиц имен пользователей, используя этот скрипт:

<?php

// Construct an HTTP POST request
$clientlogin_url = "https://www.google.com/accounts/ClientLogin";
$clientlogin_post = array(
    "accountType" => "HOSTED_OR_GOOGLE",
    "Email" => "", //username
    "Passwd" => '',  //password
    "service" => "writely",
    "source" => "your application name"
);

// Initialize the curl object
$curl = curl_init($clientlogin_url);

// Set some options (some for SHTTP)
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// Execute
$response = curl_exec($curl);

// Get the Auth string and save it
preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches);
$auth = $matches[1];

echo "The auth string is: ".$auth;
// Include the Auth string in the headers
// Together with the API version being used
$headers = array(
    "Authorization: GoogleLogin auth=".$auth,
    "GData-Version: 3.0",
);

// Make the request
$key = ;
curl_setopt($curl, CURLOPT_URL, "https://spreadsheets1.google.com/ccc?key=$key");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);

$response = curl_exec($curl);
curl_close($curl);
var_dump($response);
// Parse the response
$response = simplexml_load_string($response);

// Output data
foreach($response->entry as $file)
{
    echo "File: " . $file->title . "<br />";
    echo "Type: " . $file->content["type"] . "<br />";
    echo "Author: " . $file->author->name . "<br /><br />";
}
?>

Но я не могу придумать, как использовать это для доступа к одному конкретному рабочему листу. Пожалуйста, помогите, это сводит меня с ума.

РЕДАКТИРОВАТЬ: Следуя совету Дасприда, я получаю эту ошибку ->

Уведомление: Zend_Loader::Zend_Loader::registerautoload устарел с 1.8.0 и будет удален с 2.0.0; вместо этого используйте Zend_Loader_Autoloader в /home/c3webdev/public_html/library/Zend/Loader.php в строке 266

Предупреждение: требуется_once(Zend/Loader/Autoloader.php) [функция.требуется-один раз]: не удалось открыть поток: Нет такого файла или каталога в/home/c3webdev/public_html/library/Zend/Loader.php на строка 267

Неустранимая ошибка: require_once() [функция.требуется]: Требуется неудачное открытие'Zend/Loader/Autoloader.php ' (include_path='/главная/c3webdev/public_html/библиотека:.:/usr/lib/php:/usr/локальный/lib/php') в/home/c3webdev/public_html/library/Zend/Loader.php в строке 267

Author: JoeCortopassi, 2010-08-21

3 answers

Запрос по следующему URL-адресу должен содержать список всех листов определенной электронной таблицы:

http://spreadsheets.google.com/feeds/worksheets/**spreadsheetKey**/private/full

Чтобы установить и использовать Zend_Gdata, выполните следующие действия:

Загрузите последний пакет (http://framework.zend.com/releases/ZendGdata-1.10.7/ZendGdata-1.10.7.tar.gz ) с веб-сайта Zend Framework. Теперь давайте предположим следующую структуру директоров:

  • /index.php (ваш основной файл)
  • /библиотека/Zend (извлеките папку библиотека/Zend в здесь)

Теперь в вашем index.php, выполните следующие действия:

set_include_path(
    dirname(__FILE__) . '/library'
    . PATH_SEPARATOR . get_include_path()
);

require_once 'Zend/Loader.php';

Zend_Loader::registerAutoload();

Теперь вы можете просто следовать руководству (http://framework.zend.com/manual/en/zend.gdata.spreadsheets.html ). Для вас могут быть интересны разделы "Получение списка электронных таблиц" для создания экземпляра службы и "Получение списка листов" для извлечения всех листов определенной электронной таблицы.

Обновление:

Похоже, что пакет Zend_Gdata неправильно упакован. Я отмечу, что для почините посылку. Тем временем я предлагаю вам загрузить полный пакет Zend Framework. Чтобы правильно использовать автозагрузчик в версии 1.8, вместо этого выполните следующие действия:

require_once 'Zend/Loader/Autoloader.php';

Zend_Loader_Autoloader::getInstance();
 2
Author: DASPRiD, 2010-08-25 21:37:02

Как только вы получите список предоставленных листов для этого пользователя, вы сможете проанализировать их, чтобы получить данные (это то, что вы хотите, верно? данные рабочего листа?)

Как упоминалось выше, именно так вы получаете доступные электронные таблицы

http://spreadsheets.google.com/feeds/worksheets/<spreadsheet-key>/private/full

Затем оттуда вы можете получить URL-адрес определенной электронной таблицы, а затем оттуда вы можете получить данные из этой

Список возвращает данные с соответствующими заголовками

https://spreadsheets.google.com/feeds/list/<spreadsheet-key>/<worksheet-id>/private/basic

Ячейки возвращает его с определенными ячейками (A1, C23 и т.д.)

https://spreadsheets.google.com/feeds/cells/0<spreadsheet-key>/<worksheet-id>/private/basic

Вот дополнительная информация о api электронных таблиц Google ссылка

 0
Author: JiminyCricket, 2010-08-30 13:43:17

Для действительно простого альтернативного решения без Zend и без Google API это также может помочь.

Вы можете опубликовать свою электронную таблицу Google в формате csv в Интернете (с личным URL-адресом) и просто получить к ней доступ с помощью fopen/fgetcsv:

Https://stackoverflow.com/a/18106727/1300348

Пожалуйста, имейте в виду, что аутентификация отсутствует... таким образом, у того, у кого есть ваш URL-адрес, есть ваши данные, следовательно, это может быть неправильным решением для файлов, в которых есть пароли включенный. Но, может быть, это поможет кому-то с подобной проблемой.

 0
Author: Ben, 2017-05-23 12:11:36