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);
¿Fue útil?

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:

  1. 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 ".

  2. 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"

  3. 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).
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top