Im ersten Teil unserer Serie haben wir die Google Analytics -API vorgestellt, einschließlich der grundlegenden Nutzung. In diesem Teil werden wir weiterhin unsere Demo erstellen und sehen, wie wir sie mit mehr Funktionen erweitern können.
Wie wir im ersten Teil erläutert haben, ist die Verwaltungs -API für die Erfassung von Benutzerkonten, Eigenschaften, Ansichten verantwortlich. Für unser erstes Beispiel werden wir die Liste der für unseren authentifizierten Benutzer verfügbaren Konten abrufen.
<span>// app/src/GA_Service.php </span><span>public function accounts(){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_accounts = $service->management_accounts->listManagementAccounts(); </span> <span>$accounts = []; </span> <span>foreach ($man_accounts['items'] as $account) { </span> <span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ]; </span> <span>} </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/controllers/HomeController.php </span><span>public function accounts(){ </span> <span>$accounts = $this->ga->accounts(); </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/routes.php </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
Inside GA_Service :: Accounts Wir erstellen mit unserem autorisierten Client einen neuen Google_analyticsservice und fragen dann die API für die Liste der Konten ab.
In diesem Fall ist das Ergebnis ein Array, aber die API verwendet auch Objekte. Wir müssen diese in unserer GA_Service :: Init -Funktion nur angeben. In den folgenden Beispielen werde ich Array -Ergebnisse verwenden.
<span>$this->client->setUseObjects(true);</span>
Die Funktion ListManagement Accounts gibt ein Array zurück, das:
enthält:<span>{ </span> kind<span>: "analytics#accounts", </span> <span>username: "me@mail.com", </span> <span>totalResults: 3, </span> <span>startIndex: 1, </span> <span>itemsPerPage: 1000, </span> <span>items: [ </span> <span>{ </span> id<span>: "4449308", </span> <span>kind: "analytics#account", </span> <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308", </span> <span>name: "me@mail.com", </span> <span>permissions: { </span> effective<span>: [ </span> <span>"COLLABORATE", </span> <span>"EDIT", </span> <span>"MANAGE_USERS", </span> <span>"READ_AND_ANALYZE" </span> <span>] </span> <span>}, </span> <span>created: "2013-10-01T11:04:28.478Z", </span> <span>updated: "2013-10-01T11:04:28.478Z", </span> <span>childLink: { </span> type<span>: "analytics#webproperties", </span> <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
Beachten Sie, dass Laravel beim Rückgabe eines Arrays als Antwort das Ergebnis automatisch als JSON -Antwort codiert und an den Browser sendet.
Das Ergebnis enthält Informationen zu den Gesamt Ergebnissen und einigen Paginationsinformationen. Die Spalte der Elemente enthält die Liste der Konten mit ihren IDs, Berechtigungen usw., aber wir haben uns über Elemente geschoben, um nur die ID und den Namen aus den Konten zu extrahieren.
Wenn Sie eine Ergebnispaginierung haben möchten, können Sie immer mehr Optionen an ListManagement Account verabschieden:
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
Nehmen wir an, wir werden unseren Benutzern ihre Kontenliste zeigen, und wenn sie eine auswählen, laden wir die damit verbundene Liste der Eigenschaften.
<span>// app/src/GA_Service.php </span><span>public function properties( $account_id ){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>try { </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_properties = $service->management_webproperties->listManagementWebproperties($account_id); </span> <span>$properties = []; </span> <span>foreach ($man_properties['items'] as $property) { </span> <span>$properties[] = [ 'id' => $property['id'], 'name' => $property['name'] ]; </span> <span>}//foreach </span> <span>return json_encode($properties); </span> <span>} catch (Google_ServiceException $e) { </span> <span>return Response<span>::</span>json([ </span> <span>'status' => 0, </span> <span>'code' => 3, </span> <span>'message' => $e->getMessage() </span> <span>]); </span> <span>}//catch </span> <span>}//properties </span> <span>// app/controllers/HomeController.php </span><span>public function properties( $account_id ){ </span> <span>$properties = $this->ga->properties( $account_id ); </span> <span>return $properties; </span><span>}//properties </span> <span>// app/routes.php </span><span>Route<span>::</span>get( '/properties/{account_id}', [ 'uses' => 'HomeController@properties' ] )->where('account_id', '\d+');</span>
Die GA_Service :: Properties akzeptiert eine Konto -ID und gibt die Liste der Eigenschaften für dieses Konto zurück. Wir haben im Grunde den gleichen Prozess wie das Abrufen von Konten.
[ { id: "UA-52317977-1", name: "Prop1" }, { id: "UA-52317977-2", name: "Prop1" } ]
Jede Eigenschaft hat eine Teilmenge von Ansichten. Standardmäßig fügt Google für jede neue Eigenschaft eine Ansicht mit dem Namen All -Website -Daten hinzu.
Verwenden einer ID aus der Liste der Eigenschaften und der vom ersten Teil erfassten Konto -ID werden wir die Google Analytics -API für die Liste der verfügbaren Ansichten für eine bestimmte Kontoeigenschaft abfragen.
<span>// app/src/GA_Service.php </span><span>public function accounts(){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_accounts = $service->management_accounts->listManagementAccounts(); </span> <span>$accounts = []; </span> <span>foreach ($man_accounts['items'] as $account) { </span> <span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ]; </span> <span>} </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/controllers/HomeController.php </span><span>public function accounts(){ </span> <span>$accounts = $this->ga->accounts(); </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/routes.php </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
im Browser, wenn wir/{account_id}/{Property_id} Route klicken, sollten wir etwas Ähnliches wie:
erhalten<span>$this->client->setUseObjects(true);</span>
Um einige Statistiken von Google Analytics abzufragen, müssen wir eine Reihe von Dimensionen und Metriken bereitstellen.
Um die Liste der verfügbaren Metadaten zu ergreifen
Google Analytics gibt uns ein ETAG -Attribut, das zum Zwischenspeichern der Antwort verwendet werden kann, damit wir die API nicht auf jede Anfrage abfragen müssen.
<span>{ </span> kind<span>: "analytics#accounts", </span> <span>username: "me@mail.com", </span> <span>totalResults: 3, </span> <span>startIndex: 1, </span> <span>itemsPerPage: 1000, </span> <span>items: [ </span> <span>{ </span> id<span>: "4449308", </span> <span>kind: "analytics#account", </span> <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308", </span> <span>name: "me@mail.com", </span> <span>permissions: { </span> effective<span>: [ </span> <span>"COLLABORATE", </span> <span>"EDIT", </span> <span>"MANAGE_USERS", </span> <span>"READ_AND_ANALYZE" </span> <span>] </span> <span>}, </span> <span>created: "2013-10-01T11:04:28.478Z", </span> <span>updated: "2013-10-01T11:04:28.478Z", </span> <span>childLink: { </span> type<span>: "analytics#webproperties", </span> <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
Um den Prozess zu beschleunigen, verwenden wir Bootsnipp. Wenn der Benutzer angemeldet ist, werden wir die Startseite angezeigt.
<span>// app/src/GA_Service.php </span><span>public function properties( $account_id ){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>try { </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_properties = $service->management_webproperties->listManagementWebproperties($account_id); </span> <span>$properties = []; </span> <span>foreach ($man_properties['items'] as $property) { </span> <span>$properties[] = [ 'id' => $property['id'], 'name' => $property['name'] ]; </span> <span>}//foreach </span> <span>return json_encode($properties); </span> <span>} catch (Google_ServiceException $e) { </span> <span>return Response<span>::</span>json([ </span> <span>'status' => 0, </span> <span>'code' => 3, </span> <span>'message' => $e->getMessage() </span> <span>]); </span> <span>}//catch </span> <span>}//properties </span> <span>// app/controllers/HomeController.php </span><span>public function properties( $account_id ){ </span> <span>$properties = $this->ga->properties( $account_id ); </span> <span>return $properties; </span><span>}//properties </span> <span>// app/routes.php </span><span>Route<span>::</span>get( '/properties/{account_id}', [ 'uses' => 'HomeController@properties' ] )->where('account_id', '\d+');</span>
Wir müssen unseren Homecontroller@Index aktualisieren, um die Ansicht der Startseite anzuzeigen.
Wie Sie aus dem Screenshot sehen können, ändern wir, wenn der Benutzer ein Konto auswählt, asynchron die Eigenschaft und die Ansicht entsprechend. Um dies zu erreichen, habe ich einige einfache JS geschrieben, die Sie im letzten Repo überprüfen können.
[ { id: "UA-52317977-1", name: "Prop1" }, { id: "UA-52317977-2", name: "Prop1" } ]
melden api
Unser Ga_Service :: Bericht akzeptiert vier Argumente: eine Ansichts -ID, ein Start- und Enddatum und eine Reihe von Metriken.
<span>// app/src/GA_Service.php </span><span>public function views( $account_id, $property_id ){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>try { </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_views = $service->management_profiles->listManagementProfiles( $account_id, $property_id ); </span> <span>$views = []; </span> <span>foreach ($man_views['items'] as $view) { </span> <span>$views[] = [ 'id' => $view['id'], 'name' => $view['name'] ]; </span> <span>}//foreach </span> <span>return json_encode($views); </span> <span>} catch (Google_ServiceException $e) { </span> <span>return Response<span>::</span>json([ </span> <span>'status' => 0, </span> <span>'code' => 3, </span> <span>'message' => $e->getMessage() </span> <span>]); </span> <span>}//catch </span><span>}//views </span> <span>// app/controllers/HomeController.php </span><span>public function views( $account_id, $property_id ){ </span> <span>$views = $this->ga->views( $account_id ,$property_id ); </span> <span>return $views; </span><span>}//properties </span> <span>// app/routes.php </span><span>Route<span>::</span>get( '/views/{account_id}/{property_id}', [ 'uses' => 'HomeController@views' ] )->where([ 'account_id', '\d+', 'property_id', '\d+' ]);</span>
Google können nicht alle Ihre Legacy -Daten zurückgeben - stattdessen bieten wir ein Start- und Enddatum an. In meinem Beispiel habe ich die Ergebnisse des letzten Monats gefragt.
Der dritte Parameter ist die Liste der Metriken, die wir bereits aus der Benutzerauswahl haben.
Der vierte optionale Parameter ist eine Reihe von Optionen.
-Max-Results: Die maximale Anzahl von Ergebnissen. (Wir haben 10 verwendet, um die Antwort zu beschleunigen).
- Abmessungen: Eine von Kommas getrennte Liste von Werten. (GA: Land, GA: Stadt)
- Filter: Eine von Kommas getrennte Liste von Regeln, die dem Ergebnis gesendet werden sollen. (GA: Country! = USA, GA: Page -Views> 100)
In diesem Beispiel haben wir die USA aus der Liste der Dimensionen ausgeschlossen und nur Seitenaufrufe gezeigt, die größer als 100 sind.
- Segment: Erweiterte Segment -ID, die auf die Daten angewendet werden soll.
- Sortieren: Bestellergebnisse nach Dimensionen oder Metriken. Kann mehrere Dimensionen und Metriken kombinieren. (GA: Country, -ga: Page-Views = Order von GA: Country Ascending und von GA: Page-Views absteigend.
-Startindex: Kann zur Paginierung verwendet werden.
<span>// app/src/GA_Service.php </span><span>public function accounts(){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_accounts = $service->management_accounts->listManagementAccounts(); </span> <span>$accounts = []; </span> <span>foreach ($man_accounts['items'] as $account) { </span> <span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ]; </span> <span>} </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/controllers/HomeController.php </span><span>public function accounts(){ </span> <span>$accounts = $this->ga->accounts(); </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/routes.php </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
Nach dem Aufrufen von Google_analyticsService :: GET -Methode verwenden wir die Liste der Ergebniselemente, Spaltenheader und Gesamtergebnisse, um das Ergebnis als Tabelle auszugeben.
Lassen Sie uns jetzt sehen, wie wir unsere Demo mit Filtern, Sortieren und Segmenten erweitern können.
Filter sind eine Möglichkeit, einige Daten aus dem zurückgegebenen Ergebnis auszuschließen. Sie nehmen das folgende Formular an:
<span>$this->client->setUseObjects(true);</span>
Sie können mehrere Filter kombinieren: Sie können Komma (,) als OR ODER OPERATOR und SEMI-COLON (;) als Operator verwenden.
standardmäßig Google Analytics Group Alle Ihre Daten in einer Gruppe mit dem Namen All Sessions. Sie können jedoch immer aus den integrierten Segmenten auswählen oder je nach Ihren Anforderungen eine neue erstellen. Sie können Daten nach Überweisungen, Gerätetyp, Alter, Geschlecht usw. gruppieren
Sie können die Demo erweitern, indem Sie ein neues Auswahlelement mit der verfügbaren Segmentliste hinzufügen und die ID an die zuvor erläuterte GET -Methode übergeben.
<span>{ </span> kind<span>: "analytics#accounts", </span> <span>username: "me@mail.com", </span> <span>totalResults: 3, </span> <span>startIndex: 1, </span> <span>itemsPerPage: 1000, </span> <span>items: [ </span> <span>{ </span> id<span>: "4449308", </span> <span>kind: "analytics#account", </span> <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308", </span> <span>name: "me@mail.com", </span> <span>permissions: { </span> effective<span>: [ </span> <span>"COLLABORATE", </span> <span>"EDIT", </span> <span>"MANAGE_USERS", </span> <span>"READ_AND_ANALYZE" </span> <span>] </span> <span>}, </span> <span>created: "2013-10-01T11:04:28.478Z", </span> <span>updated: "2013-10-01T11:04:28.478Z", </span> <span>childLink: { </span> type<span>: "analytics#webproperties", </span> <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
Sie können die Seite /Segmente besuchen, um die Liste der verfügbaren Segmente mit ihren IDs anzuzeigen, und Sie können dies natürlich als Option verwenden, wie wir zuvor gesehen haben.
Die Google Analytics -API ist sehr flexibel und bietet viele Funktionen. Die Dokumentation ist jedoch noch nicht vollständig und bietet keine guten Beispiele für die Verwendung. Sie erhalten viel mehr, indem Sie sich in den Quellcode und die Testmöglichkeiten und -grenzen eingraben.
In dieser Serie haben wir uns auf die grundlegende Verwendung von Google Analytics konzentriert, aber Sie können die Demo mit Optionen aus dem Google Analytics -Dashboard erweitern.
Sie können das endgültige Repo für den Quellcode dieses Tutorials überprüfen.
Fragen? Kommentare? Lass es mich wissen!
Das obige ist der detaillierte Inhalt vonVerwenden der Google Analytics API V3 mit PHP: Daten abrufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!