Google-API-Verbindung zu empfangen, die Werte aus Arbeitsblatt
Habe ich mich auf dieses Projekt denken, es wäre einfach. Viele Stunden später merkte ich die Google API ist ein bisschen wie ein labyrinth mit mehreren APIs und Bibliotheken. Ich brauche wirklich bitte klare Anweisungen, wie zu gehen über das tun dies.
Erstellte ich mehrere Google Doc-Tabellen, die ich die Erlaubnis, andere Benutzer zu Bearbeiten.
Alles was ich brauche, um programmgesteuert abrufen von Informationen aus diesen Tabellen mit PHP. Allerdings kann ich nicht herausfinden, wie die Verbindung zum sogar starten Sie den Abruf.
Hier ist was ich getan habe, so weit:
1 - Installiert die Google-PHP-API-Bibliotheken.
2 - Erstellt ein Google-API-Projekt, in das gleiche Konto. Ich habe keine Ahnung, welche API muss ich und das oAuth-Schlüssel, die ich brauche.
3 Installiert, das Google Spreadsheet API-client von https://github.com/asimlqt/php-google-spreadsheet-client.
Gut, was jetzt? Wie sende ich die API-Befehl zum abrufen der Tabellenkalkulation, die ich möchte. Ich bin mir nicht sicher, wie zu authentifizieren und abrufen. So weit, ich habe versucht, die unter Verwendung der API-Key für Google Drive....das war nur eine Vermutung. Ich kopiert und eingefügt, die unten aus dem Beispiel im Google Spreadsheet API-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();
?>
Erhalte ich die folgende Fehlermeldung:
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
Bitte, bitte. Klare Anweisungen. Ich bin ein absoluter Google-API-Neuling. danke. Beispiele, wie Tests in SOAPUI oder über bash wäre auch hilfreich, da kann ich dann verwenden, um herauszufinden, wie es zu Problem Curl Anfrage. Vielen Dank!
InformationsquelleAutor der Frage user2029890 | 2014-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es endlich funktioniert, trotz aller versuche, aus den Dokumenten, um es so Aussehen wie unmöglich, hier ist mein setup:
Müssen Sie die Anmeldeinformationen für die API-Konsole: https://console.developers.google.com/
Dort müssen Sie zuerst ein Projekt erstellen, und erstellen Sie Reihe von authentified Informationen für Ihre app: in der linken Menü, klicken Sie auf API & Authentifizierung, dann die Anmeldeinformationen. Klicken Sie auf Create New Client ID (Roter button), dann wählen Sie Service-Konto. Sie downloaden eine Datei, halten Sie es sicher. Sie laden Sie Sie mit Ihrem Skript.
Bitte beachten Sie: es hat noch nie funktioniert, es sei denn: mein Dokument war die 'alte Datei'. Ich musste auch die Aktie der Tabellenkalkulation Dokument mit der Benutzer-ID (die, könnte eine E-Mail) generiert, die auf Google ' s Konsole.
Das Dokument enthält die Obere Zeile, die eingefroren ist, mit den Spalten name (name, Alter).
Hier ist das php script, das ich verwendet in Kombination mit den oben genannten:
Ich sollte auch beachten:
All dies ist immer noch sehr viel ein work in progress, aber hoffentlich hilft jemand schreiben tolle Anleitung für jedermann, um besser zu verstehen, die nitty gritty
Es ist eine Zusammenstellung von bits und Stücke, die sowohl aus dem google-Dokumentationen, einige Antworten auf stackoverflow und Informationen aus 2 api-Bibliotheken
Es wurde ein schrecklich schmerzhaft, diese zu erhalten arbeiten, und es sollte wirklich nicht; ich gehe davon aus das ist, weil google den übergang Authentifizierung, Konsolen-interface-und api-Versionen, die alle zur gleichen Zeit.
EDIT: Es scheint die Spalten-Namen in die google-doc sind eingeschränkt: kein Leerzeichen erlaubt(?), Unterstrich nicht erlaubt (?), CamelCase scheint lästig. Es gelang mir nur um die Striche zu arbeiten, wie in "placement-anderen", da sonst die api wirft einige "Uncaught exception"
EDIT: ich habe die exakt gleichen Einstellungen für ein neues Projekt, und immer noch funktioniert, mit der neuen Spreadsheet-Modell eingeführt, die von Google vor kurzem. Was halten Sie mir, dass ich vergessen hatte: keine leere Zelle erlaubt, Kopfzeilen müssen eingefroren werden, ohne Leerzeichen, und Sie sind in Kleinbuchstaben, die bei der Abfrage von PHP.
Hoffe, das hilft!
InformationsquelleAutor der Antwort jrgd
Dieser Antwort ist gemeint, dass ein add-on zu jrgd Antwort, und ich poste es hier als Antwort, weil es code enthält.
Die Probleme mit der Verbindung zu sich selbst, hing mir bis. Hier ist, was ich tun musste, um zu beheben, dass: Versucht man Google accessToken .
Auch die Tabellenkalkulation verfügt, um gemeinsam mit den Google-generierte e-mail, die Sie finden in Ihrem code.
Auch, jrgd, um Ihre Frage zu beantworten, etwa, dass
Request
Objekt: es existiert nicht mit dem Google Spreadsheet API; /* ich konnte ihn nicht finden wenn ich in den Composer zum herunterladen der Bibliothek */Stattdessen landete ich zu tun, was GingerDog haben:
$serviceRequest = new Google\Spreadsheet\DefaultServiceRequest($accessToken);
Google\Spreadsheet\ServiceRequestFactory::setInstance($serviceRequest);
Es gibt auch eine beträchtliche Wahrscheinlichkeit, dass der code eine Ausnahme auslösen, wenn mit
getSpreadsheets()
die durch einen HTTP-Fehlercode zurückgegeben wird, der höher ist als 300 . DieSpreadsheetService
Klasse hat die Methode (hier ist der 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')
);
}
Beachten Sie, dass es eine andere Klasse, die "die Drecksarbeit hier": die
DefaultServiceRequest
Klasse. Hier ist dieget()
verwendet wird:Beachten Sie, dass die Funktion, aus seinem innersten Helfer, hat eine chance, zurück zu geben, ein
http_code
dazu führen, dass der code eine exception werfen. Nicht gut für das Geschäft.Die Lösung
Den Weg, den ich beheben, ändern Sie die folgende Zeile des Codes:
$spreadsheetFeed = $spreadsheetService->getSpreadsheets();
dieser while-Schleife:
InformationsquelleAutor der Antwort Mike Warren
Ich geschrieben habe, eine wrapper-Klasse für die Google-Sheets-Authentifizierung und-Blatt-Zelle Bearbeiten Sie in meinem neuesten Projekt. Getestet ab 02 Sep 2015, so ist es sehr up-to-date!
Voraussetzungen:
Die Verwendung der wrapper-Klasse:
Und hier geht der wrapper-Klasse - fühlen Sie sich frei, es zu ändern - die meisten der code ist ziemlich standard, boilerplate-code. Geprüft arbeiten!
}
InformationsquelleAutor der Antwort zrll2