Нужна помощь: чтение моей электронной таблицы Google и ее конфиденциальность - PullRequest
2 голосов
/ 21 августа 2010

Очень расстраиваюсь, пытаясь заставить это работать.В основном это для сайта (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 />";
}
?>

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

РЕДАКТИРОВАТЬ: Следуя советам DASPRiD дает мне эту ошибку ->

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

Предупреждение: require_once (Zend / Loader / Autoloader.php) [function.require-Once]: не удалось открытьпоток: нет такого файла или каталога в /home/c3webdev/public_html/library/Zend/Loader.php в строке 267

Неустранимая ошибка: require_once () [function.require]: не удалось открыть, требуется 'Zend / Loader/Autoloader.php '(include_path =' / home / c3webdev / public_html / library:.: / Usr / lib / php: / usr / local / lib / php ') в / home / c3webdev / public_html / library / Zend / Loader.php на линии 267

Ответы [ 3 ]

2 голосов
/ 24 августа 2010

В запросе по следующему 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 (ваш основной файл)
  • / library / 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();
0 голосов
/ 07 августа 2013

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

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

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

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

0 голосов
/ 30 августа 2010

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

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 и т.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...