utilizando Zend_Gdata_Spreadsheets para hojas de cálculo públicas?
-
19-09-2019 - |
Pregunta
Tengo el código que está trabajando, para cargar una hoja de cálculo de Google y cargar algunos datos de él. Si la hoja de cálculo en cuestión es pública, ¿Cómo modificar el código para no requerir un nombre de usuario / contraseña?
$key="keytothespreadsheet";
$user="test@example.com";
$pass="*****";
$authService = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$httpClient = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $authService);
$gdClient = new Zend_Gdata_Spreadsheets($httpClient);
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey($key);
$feed = $gdClient->getWorksheetFeed($query);
print_r($feed);
Solución
En la siguiente línea, el cliente HTTP es opcional:
$gdClient = new Zend_Gdata_Spreadsheets($httpClient);
Por lo tanto, simplemente no pasarlo. Los siguientes son equivalentes:
$gdClient = new Zend_Gdata_Spreadsheets();
// or
$gdClient = new Zend_Gdata_Spreadsheets(null);
// or
$gdClient = new Zend_Gdata_Spreadsheets(new Zend_Http_Client());
Otros consejos
Al igual que @ Matt, quería acceder a una hoja de cálculo pública sin proporcionar credenciales. Gracias a @Derek Illchuk, tengo una parte del camino allí. Todavía no estaba funcionando, sin embargo, hasta que aprendí lo siguiente:
-
Tenga en cuenta que el Archivo> Publicar en la Web característica no es lo mismo que Configuración para compartir> Público en la Web . Si se olvida de activar "Publicar en Web", obtendrá este error: "esperado código de respuesta 200, tiene 400 La hoja de cálculo en esta dirección URL no se pudo encontrar Asegúrese de que tienes la dirección correcta y que. el propietario de la hoja de cálculo no la haya eliminado ".
-
En la configuración "Publicar en la Web", asegúrese de desactivar "necesario que los lectores que inicie sesión con su _ __ cuenta.". De lo contrario obtendrá este error: ". 200 código de respuesta esperada, consiguió 403 Usted no tiene acceso a la vista de la hoja de cálculo Asegúrese de que está debidamente autenticado"
-
De acuerdo con la documentación de Google , "Las hojas de cálculo se alimentan únicamente apoya la visibilidad 'privado' y la proyección 'completo' ". Sin embargo, encontré que necesitaba para especificar la visibilidad 'público' y la proyección 'básico'. De lo contrario me dio este mensaje: "código de respuesta esperada 200, tiene 501 Proyección errónea o no soportado para este tipo de operación."
Esto es lo que funcionó para mí:
$spreadsheetService = new Zend_Gdata_Spreadsheets(null);
$query = new Zend_Gdata_Spreadsheets_CellQuery();
$query->setSpreadsheetKey($spreadsheetKey);
$query->setWorksheetId($worksheetId);
$query->setVisibility('public'); //options are 'private' or 'public'
$query->setProjection('basic'); //options are 'full' or 'basic'
$cellFeed = $spreadsheetService->getCellFeed($query);
foreach ($cellFeed as $cellEntry) {
$text = $cellEntry->content->text;
//Do something
break; //I only wanted the first cell (R1C1).
}