Necesita ayuda: La lectura de la hoja de cálculo Google, manteniéndola privada
-
30-09-2019 - |
Pregunta
Primeros súper frustrado tratando de conseguir este trabajo. Básicamente se trata de un sitio (x10hosting.com) donde no puedo incluir el Zend Framework gdata, por lo que estoy tratando de utilizar la API de datos de Google con PHP cURL para acceder a ella. Lo más que he podido hacer es devolver una lista de las hojas de trabajo suministradas nombres de usuario, el uso de este script:
<?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 />";
}
?>
Pero no puedo encontrar una manera de utilizar esto para el acceso una hoja de trabajo específica. Por favor ayuda, esto me está volviendo loco.
EDIT: Siguiendo el consejo de DASPRiD me da este error ->
Aviso: Zend_Loader :: :: Zend_Loader registerAutoload está en desuso a partir de 1.8.0 y será eliminado con 2.0.0; utilizar Zend_Loader_Autoloader lugar en /home/c3webdev/public_html/library/Zend/Loader.php en la línea 266
Advertencia: require_once (Zend / cargadora / Autoloader.php) [Function.require una vez]: no pudo flujo abierto: No existe el fichero o directorio en /home/c3webdev/public_html/library/Zend/Loader.php en la línea 267
Fatal error: require_once () [Function.require]: apertura Error required 'Zend / cargador / Autoloader.php' (Include_path = '/ home / c3webdev / public_html / biblioteca:.: / Usr / lib / php: / usr / local / lib / php') en /home/c3webdev/public_html/library/Zend/Loader.php en la línea 267
Solución
Una consulta a la siguiente dirección URL que debe enumerar todas las hojas de una hoja de cálculo específica:
http://spreadsheets.google.com/feeds/worksheets/**spreadsheetKey**/private/full
Para instalar y utilizar Zend_Gdata, haga lo siguiente:
Descarga el último paquete ( http: //framework.zend.com/releases/ZendGdata-1.10.7/ZendGdata-1.10.7.tar.gz ) desde el sitio web de Zend Framework. Ahora vamos a suponer la siguiente estructura directiva:
- /index.php (su archivo principal)
- / / Zend (extracto de la biblioteca carpeta / Zend aquí) biblioteca
En su index.php, haga lo siguiente:
set_include_path(
dirname(__FILE__) . '/library'
. PATH_SEPARATOR . get_include_path()
);
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
Ahora es suficiente con seguir el manual ( http: // marco .zend.com / manual / es / zend.gdata.spreadsheets.html ). Interesante para los que pueden ser los temas de "conseguir una lista de hojas de cálculo" para la creación de la instancia de servicio y "conseguir una lista de hojas de trabajo" en busca de todas las hojas de una hoja de cálculo específica.
Actualización:
Parece que el paquete Zend_Gdata no está correctamente embalado. Voy a señalar que para obtener el paquete fijo. Mientras tanto, le sugiero que descargar el paquete de Zend Framework completa. Para utilizar el cargador automático en 1.8 correctamente, haga lo siguiente en su lugar:
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
Otros consejos
Una vez que la lista de hojas de trabajo suministradas por los que el usuario puede analizar a través de obtener los datos (eso es lo que quiere la derecha? Los datos de la hoja?)
Como se mencionó anteriormente esta es la forma de obtener las hojas de cálculo disponible
http://spreadsheets.google.com/feeds/worksheets/<spreadsheet-key>/private/full
A continuación, desde allí se puede obtener la dirección URL a una hoja de cálculo específica y luego desde allí se puede obtener los datos de ese
Lista devuelve los datos con partidas correspondientes
https://spreadsheets.google.com/feeds/list/<spreadsheet-key>/<worksheet-id>/private/basic
Células lo devuelve con celdas definidas (A1, C23 etc.)
https://spreadsheets.google.com/feeds/cells/0<spreadsheet-key>/<worksheet-id>/private/basic
Aquí hay más información sobre la de cálculo de Google API referencia
Para una solución muy fácil alternativa sin Zend y sin API de Google esto puede también ayuda.
Puede publicar su hoja de cálculo de Google como csv en la web (con una URL privada) y simplemente acceder a él por fopen / fgetcsv
https://stackoverflow.com/a/18106727/1300348
Tenga en cuenta que no hay autenticación ... así que quien tiene su URL tiene sus datos, por lo tanto, esto podría no ser la solución correcta para los archivos en los que hay contraseñas incluidos. Pero tal vez ayude a alguien con un problema similar.