Insipirado en este post de Chris Teso el siguiente tutorial propone una forma de crear una sincronización entre una Hoja de Google Spreadsheets y una tabla dentro de MySQL.
Requerimientos
- Crear y guarda una hoja de calculo en Google Docs y pon nombre en la parte superior de las columnas que utilizaras ( ejemplo ) .
- Descarga el Standalone Gdata del Zend Framework para poder interactuar con tu hoja de calculo desde PHP.
- Edita el archivo de configuración que viene adjunto en la descarga.
- Crea una tabla en MySQL con la estructura similar a las columnas de tu hoja de calculo.

Bootstrap
<?php
session_start();
$root = dirname(__FILE__);
set_include_path(
$root.'/lib'.PATH_SEPARATOR.
get_include_path()
);
require_once 'fcn.php';
require_once 'lib/Zend/Loader.php';
Zend_Loader::loadClass('Zend_Http_Client');
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Spreadsheets');
// get the configuration object
$app_configuration = (object)getConfig();
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
$app_configuration->username
, $app_configuration->password
, Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME);
$gdClient = new Zend_Gdata_Spreadsheets($httpClient);
$authLink = '<a href="' . getAuthSubUrl() . '">Click here to authenticate</a>';
?>
Authorización
Tras haber instalado los archivos en el servidor, es necesario indicar a Google que nuestro sitio consumirá sus servicios usando OAuth , esto puede ser hecho desde aquí. Después de esto y como parte de los protocolos de usados en Oauth el usuario debe indicar que desea hacer la conexión Tu Sitio – Google Docs, la pantalla desplegada sera muy parecida a la mostrada abajo.
Sincronización.
Despues de concedido el acceso, Google redirigirá hacia el valor del parámetro next, es en este paso cuando podemos acceder a la hoja de cálculo y obtener sus valores.
<?php
require_once '__bootstrap.php';
if(isset($app_configuration->Gdata_AuthSub_token)):
$token = $app_configuration->Gdata_AuthSub_token;
else:
if(isset($_GET['token']))
$token = $_GET['token'];
endif;
if(!empty($token)):
//$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($token);
//almacenamos el resultado en el archivo de configuración.
set_ini_file_value('Gdata_AuthSub_token',$token);
//para este momento podrías dar un vistazo a tu config.ini
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient(
$app_configuration->username
, $app_configuration->password
, Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME);
$spreadsheetService = new Zend_Gdata_Spreadsheets($client);
$query = new Zend_Gdata_Spreadsheets_ListQuery();
$query->setSpreadsheetKey($app_configuration->spreadsheetKey);
$listFeed = $spreadsheetService->getListFeed($query);
$index = 0;
$storage=array();
$storage = parseListItems($listFeed->entries);
//convertimos a csv y cargamos en la tabla usando LOAD FILE INTO
tocsv(dirname(__FILE__).DIRECTORY_SEPARATOR.'db.csv',$storage);
endif;
?>
Por último me gustaría incluir el siguiente ejemplo que muestra cómo hacer un servicio que lee el contenido de tu hoja de cálculo y devuelve sus resultados en formato JSON.
<?php
require_once '__bootstrap.php';
$query = new Zend_Gdata_Spreadsheets_ListQuery();
$query->setSpreadsheetKey($app_configuration->spreadsheetKey);
$listFeed = $gdClient->getListFeed($query)->entries;
$filters = array();
$filter = isset($_REQUEST['filter']) ? $_REQUEST['filter'] : '';
$q = isset($_REQUEST['q']) ? $_REQUEST['q'] : '';
if(!empty($q) && !empty($filter))
switch($filter):
case 'BY_CATEGORY':
$query->setSpreadsheetQuery("Category=$q");
break;
case 'BY_PRICE':
$query->setSpreadsheetQuery("Price=$q");
break;
case 'BY_NAME':
$query->setSpreadsheetQuery("Name=$q");
break;
endswitch;
$storage = parseListItems($listFeed);
die(json_encode($storage));
?>
Y eso es todo XD hecha un vistazo al archivo csv creado “db.csv” y a tu tabla que especificaste en el config.ini.
Happy Coding.
Descarga



