2009-12-15 6 views
3

J'ai ce code qui fonctionne, pour charger une feuille de calcul Google et charger des données à partir de celui-ci. Si la feuille de calcul en question est publique, comment puis-je modifier le code pour ne pas avoir besoin d'un nom d'utilisateur/mot de passe?en utilisant Zend_Gdata_Spreadsheets pour des feuilles de calcul publiques?

$key="keytothespreadsheet"; 
$user="[email protected]"; 
$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); 

Répondre

2

Dans la ligne suivante, le client HTTP est facultative:

$gdClient = new Zend_Gdata_Spreadsheets($httpClient); 


Donc, juste ne passent pas. Les éléments suivants sont équivalents:

$gdClient = new Zend_Gdata_Spreadsheets(); 
// or 
$gdClient = new Zend_Gdata_Spreadsheets(null); 
// or 
$gdClient = new Zend_Gdata_Spreadsheets(new Zend_Http_Client()); 
0

Comme @Matt, je voulais accéder à une feuille de calcul publique sans fournir d'informations d'identification. Merci à @Derek Illchuk, j'ai pris le relais. Il a cependant, encore ne fonctionnait pas, jusqu'à ce que j'appris ce qui suit:

  1. Notez que le Fichier> Publier à la fonction Web n'est pas la même chose que Paramètres de partage> public sur le Web. Si vous oubliez d'activer "Publier sur le Web", vous obtiendrez cette erreur: "Code de réponse attendu 200, a obtenu 400 La feuille de calcul à cette URL est introuvable. Assurez-vous que vous avez la bonne URL et que le propriétaire de la feuille de calcul n'a pas supprimé. "

  2. Dans les « Publier sur le Web » paramètres, assurez-vous de décocher la case « Exiger les téléspectateurs à signer avec leur _ __ compte. ». Sinon, vous obtiendrez cette erreur: "code de réponse attendu 200, obtenu 403 Vous n'avez pas accès à la feuille de calcul." Assurez-vous que vous êtes correctement authentifié. "

  3. Selon Google's documentation, "Le flux de feuilles de calcul ne prend en charge que la visibilité" privée "et la projection" complète "." Cependant, j'ai trouvé que j'avais besoin de spécifier la visibilité «publique» et la projection «basique». Sinon, j'ai reçu cette erreur: "Code de réponse attendu 200, 501 mauvaise projection ou non prise en charge pour ce type d'opération."

Voici ce qui a fonctionné pour moi:

$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). 
    } 
Questions connexes