L'API Google Comment se connecter à recevoir valeurs à partir de feuille de calcul
Je me suis lancé sur ce projet, pensant que ce serait simple. De nombreuses heures plus tard je me suis rendu compte de l'API de Google est un peu un labyrinthe avec plusieurs Api et les bibliothèques. J'ai vraiment besoin s'il vous plaît des directives claires sur la façon d'aller à ce sujet.
J'ai créé plusieurs feuilles de calcul Google Doc qui j'ai accordé la permission à d'autres utilisateurs à modifier.
À tous j'ai besoin est de par programmation à récupérer les informations à partir de ces feuilles de calcul à l'aide de PHP. Cependant, je ne peux pas comprendre comment vous connecter à même de commencer la récupération.
Voici ce que j'ai fait jusqu'à présent:
1 - Installé le Google PHP API des bibliothèques.
2 - a Créé une API de Google de projet dans le même compte. Je n'ai aucune idée de ce qui l'API dont j'ai besoin et qui oAuth clés dont j'ai besoin.
3 - Installé l'API Google feuille de calcul client de https://github.com/asimlqt/php-google-spreadsheet-client.
Bien, maintenant ce qui? Comment dois-je envoyer la commande de l'API pour récupérer la feuille de calcul que je veux. Je ne suis pas sûr comment authentifier et à le récupérer. Jusqu'à présent, j'ai essayé de le ci-dessous à l'aide de l'API Serveur de Clés pour Google Drive....c'était juste une supposition. J'ai copié et collé ci-dessous à partir de l'exemple de l'API de Google feuille de calcul client:
<?php
require_once 'php-google-spreadsheet-client-master\src\Google\Spreadsheet\Autoloader.php';
$accessToken = 'xxxxxxxxxxxxxxxxxxxxxxx';
$request = new Google\Spreadsheet\Request($accessToken);
$serviceRequest = new Google\Spreadsheet\DefaultServiceRequest($request);
Google\Spreadsheet\ServiceRequestFactory::setInstance($serviceRequest);
$spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetFeed = $spreadsheetService->getSpreadsheets();
?>
Je reçois l'erreur suivante:
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\php\php-google-spreadsheet-client-master\src\Google\Spreadsheet\SpreadsheetFeed.php:43 Stack trace: #0 C:\php\php-google-spreadsheet-client-master\src\Google\Spreadsheet\SpreadsheetFeed.php(43): SimpleXMLElement->__construct('') #1 C:\php\php-google-spreadsheet-client-master\src\Google\Spreadsheet\SpreadsheetService.php(39): Google\Spreadsheet\SpreadsheetFeed->__construct(false) #2 C:\php\google_docd.php(11): Google\Spreadsheet\SpreadsheetService->getSpreadsheets() #3 {main} thrown in C:\php\php-google-spreadsheet-client-master\src\Google\Spreadsheet\SpreadsheetFeed.php on line 43
S'il vous plaît, s'il vous plaît. Des instructions claires. Je suis une complète de l'API Google débutant. merci. Des exemples sur la façon de tester dans SOAPUI ou via bash serait également utile que je peux ensuite l'utiliser pour comprendre comment le problème demande Curl. Merci beaucoup!
OriginalL'auteur user2029890 | 2014-01-31
Vous devez vous connecter pour publier un commentaire.
J'ai finalement obtenu de travail, en dépit de toutes les tentatives de les documents pour la faire ressembler impossible, voici ma configuration:
Vous aurez besoin pour créer des informations d'identification sur l'API Console: https://console.developers.google.com/
Il vous faudra d'abord créer un projet et créer ensemble de authentifiés de l'information pour votre application: dans le menu de gauche, cliquez sur l'API & Auth, puis des informations d'Identification. Cliquez sur Créer un Nouveau Client ID (bouton rouge), puis sélectionnez le Compte de Service. Vous allez télécharger un fichier, de le conserver en lieu sûr. vous allez envoyer avec votre script.
Aussi, veuillez noter que: il n'a jamais travaillé au moins: mon document a été "la vieille feuille de calcul'. J'ai aussi besoin de partager le document de feuille de calcul avec l'ID d'utilisateur (celui que pourrait être un e-mail) généré sur Google console.
Le document contient une rangée du haut qui est gelé avec les noms des colonnes (nom, âge).
Voici le script php que j'ai utilisé en combinaison avec ce qui précède:
Je tiens également à noter:
Tout ceci est encore beaucoup de travail en cours, mais j'espère qu'il va aider quelqu'un d'écrire incroyable instructions pour quiconque de mieux comprendre les tenants et aboutissants
C'est une compilation de morceaux provenant à la fois du google documentations, quelques réponses sur stackoverflow et infos de la 2 bibliothèques api
Il a été terriblement douloureux de le faire fonctionner et il ne devrais vraiment pas; je suppose que c'est parce que google est sur le point d'authentification, l'interface de la console et de l'api versions en même temps.
EDIT: Il semble que les noms de colonnes dans le google doc sont limités: aucun espace n'est autorisé(?), pas d'underscore permis (?), CamelCase semble gênant. J'ai seulement réussi à obtenir les tirets de travailler, comme dans "placement-autres", sinon, l'api en jette "Uncaught exception"
EDIT: j'ai utilisé exactement la même configuration pour un nouveau projet et continue à travailler avec le nouveau modèle de feuille de calcul introduit par Google récemment. Que tiens-moi que j'avais oublié: pas de cellule vide permis, les en-têtes doivent être congelés sans espace, et ils sont en minuscules lorsqu'il est interrogé à partir de PHP.
Espérons que cette aide!
hey @GingerDog merci mais je ne sais pas pourquoi je voudrais faire cela, ni à quoi il devrait ressembler
J'ai essayé d'utiliser le code que vous avez fourni (merci!!) et j'ai trouvé nécessaire de le modifier légèrement pour qu'il fonctionne.
Comment voulez-vous obtenir la feuille de calcul à la disposition du programme?
Je reçois également la "Chaîne ne peut pas être analysée comme XML" erreur. Que dois-je faire pour accéder à la feuille de calcul ici: docs.google.com/spreadsheets/d/... ?
OriginalL'auteur
Cette réponse est destinée à être un add-on pour jrgd réponse, et je poste ici, comme une réponse, parce qu'elle contient le code.
Les problèmes de connexion se hung moi. Voici ce que j'avais à faire pour résoudre ce: En essayant d'Obtenir de Google accessToken .
Aussi, la feuille de calcul doit être partagée avec les Google générés par e-mail que vous trouverez dans votre code.
Aussi, jrgd, pour répondre à votre question à propos de ce
Request
l'objet: il n'existe pas dans la feuille de calcul Google API; /* je ne pouvais pas le trouver quand j'ai utilisé du Compositeur pour télécharger la bibliothèque */Au lieu de cela, j'ai fini par faire ce que GingerDog n':
$serviceRequest = new Google\Spreadsheet\DefaultServiceRequest($accessToken);
Google\Spreadsheet\ServiceRequestFactory::setInstance($serviceRequest);
Il y a aussi une probabilité significative de la code de la levée d'une Exception lors de l'utilisation de
getSpreadsheets()
, grâce à un code d'erreur HTTP renvoyées qui est supérieur à 300 . LeSpreadsheetService
de classe a de la méthode (voici son code:/**
* Fetches a list of spreadhsheet spreadsheets from google drive.
*
* @return \Google\Spreadsheet\SpreadsheetFeed
*/
public function getSpreadsheets()
{
return new SpreadsheetFeed(
ServiceRequestFactory::getInstance()->get('feeds/spreadsheets/private/full')
);
}
Notez qu'il y a une autre catégorie qui est de "faire le sale boulot ici": la
DefaultServiceRequest
classe. Voici laget()
qui est utilisé:Avis que la fonction, de ses intimes, helper, a une chance de redonner un
http_code
qui va provoquer le code pour lancer une exception. Pas bon pour les affaires.La Solution
La façon dont j'ai remédié à modifier la ligne de code suivante:
$spreadsheetFeed = $spreadsheetService->getSpreadsheets();
à ce moment-boucle:
C'est une horrible hack, je vous suggère d'ajouter quelque chose pour limiter le nombre de tentatives que vous faites.
Combien de tentatives souhaitez-vous mettre au maximum? /* Il n'y a pas une quantité finie de requêtes par jour sur ce que je connais, à la différence de la Recherche Personnalisée Google API que j'utilise */
cinq? De plus je suis contre l'idée de juste aveuglément de réessayer. Votre code pourrait boucle en essayant toujours quand il n'y arriverez pas, et sans doute vous avez des risques de nuisances pour le service à fournir.
et mike: j'ai eu un rapport à propos de la solution au-dessus de l'être (éventuellement) rompu avec les dernières versions de google feuille de calcul mise à jour—quelle est votre expérience avec elle: il l'a fait pause?
OriginalL'auteur
J'ai écrit une classe wrapper pour les Feuilles de calcul Google authentification et la feuille de l'édition de cellules dans mon dernier projet. Testé travail d'02 Sep 2015, donc c'est très up-to-date!
Conditions préalables:
D'utiliser la classe wrapper:
Et voici la classe wrapper - n'hésitez pas à le modifier - la plupart du code est assez standard, code réutilisable. Testé travail!
}
OriginalL'auteur