Google API Beispiel: Meistbesuchte Seiten mit PHP aus Google Analytics lesen

Technik
Google API Beispiel: Meistbesuchte Seiten mit PHP aus Google Analytics lesen

Google bietet mit der API Client PHP Library für so gut wie jedes Google Produkt die Möglichkeit zum Datenaustausch. Ein besonders häufiger Anwendungsfall ist das Auslesen von Daten aus Google Analytics.

In diesem Beispiel wird gezeigt, wie man die meistbesuchten Seiten aus Analytics liest. Zudem wird hier der Server-zu-Server Zugriff beschrieben, sodass Daten dann beispielsweise mittels Cronjob ausgelesen werden können. Außerdem wird die aktuellste Version der Client Library verwendet. Viele Beispiele, auch von Google selbst, verwenden noch eine ältere Version, in der einige Befehle und vor allem Klassen anders benannt sind.

1. API Keys erzeugen

Um überhaupt mit dem Google Server kommunizieren zu können, benötigen wir Zugangsdaten, die API Keys.

  1. Auf console.developers.google.com gehen und anmelden.
  2. Wenn nötig ein neues Projekt erstellen.
  3. Unter dem Punkt APIs & auth › Credentials auf Create new Client ID klicken.
  4. Service account wählen. Im Falle einer Web application müsste sich der Besucher ständig anmelden, dafür wäre das Programm auch nicht an nur ein Google Analytics Konto gebunden. Wir wollen jedoch automatisch und ohne manuellen Login zugreifen können.
  5. Nach dem Speichern öffnet sich ein Download Fenster. Speichert die Datei, es handelt sich um euren privaten Schlüssel.
  6. Neu: Es startet automatisch der Download einer .JSON-Datei. Diese enthält nun die Authentifizierungdaten für den Login bei Google.
  7. Nun zu dem Punkt APIs & AuthAPIs wechseln und die Google Analytics API auf ON stellen.

Google API Schlüssel erzeugen

Somit sind wir in der Entwicklerkonsole vorerst fertig, später benötigen wir noch die Zugangsdaten - also offen lassen.

2. Google API PHP Client Library

Als nächstes müssen wir die API Bibliothek von Google herunterladen und auf den Server laden.

  1. Auf github.com/google/google-api-php-client die ZIP-Datei herunterladen, entpacken und auf den Server laden oder mittels GIT Befehl direkt auf den Server laden.
  2. Auch die zuvor heruntergeladene JSON-Datei auf den Server hochladen.

Empfohlen wird allerdings mittlerweile die Installation mittels Composer. Das Programm verwaltet die Abhängigkeiten von PHP-Projekten und sorgt für ein reibungsloses Zusammenspiel eurer Projekte mit anderen Projekten.

3. Analytics API-Benutzer freischalten

Damit unser Skript nun unsere Analytics Daten zugreifen darf, müssen wir diesem Zugang auch den entsprechenden Zugriff gewähren.

API E-Mail-Adresse bei Analytics hinzufügen

  1. Google Analytics öffnen und auf den Tab Verwalten wechseln.
  2. E-Mail-Adresse unserer vorhin erstellten API Keys aus der Entwicklerkonsole kopieren. Diese sieht ungefähr so aus: ([0-9]+)-([a-z0-9]+)@developer.gserviceaccount.com.
  3. Entweder für das ganze Konto, das jeweilige Property oder nur für die Datenansicht unter dem Punkt Nutzerverwaltung dieser E-Mail-Adresse Leserechte geben.

4. Anfrage senden

Jetzt geht es an die eigentliche Anfrage. Dazu einfach den Code in eine PHP-Datei kopieren und hochladen. Vorher müssen wir aber noch ein paar Variablen befüllen.

  • $googleCred['email-address']: Die E-Mail-Adresse aus der Google Entwicklerkonsole
  • $googleCred['key-file-location']: Pfad zur privaten Schlüsseldatei
  • $gaViewID: Die ID eurer Analytics Datenansicht. Geht dazu in Google Analytics unter den Punkt Verwalten › wählt die jeweilige Datenansicht › Einstellungen der Datenansicht › ID der Datenansicht

Update: Anstatt der Login-Daten und des Key Files wird in der neusten Version eine einheitliche JSON-Datei verwendet. Dies ist ganz praktisch, jedoch aber auch eine gewisse Umstellung. Vor allem da die sich die Dokumentation von Google selbst noch großteils auf das veraltete Verfahren bezieht.

Vergesst auch nicht den Pfad zu eurem Client API Ordner zu aktualisieren.

<?php
// View ID of Google Analytics
$gaViewID = '123456789';

// set include path for further includes within the google classes
// Attention: not needed if you use Composers autoload.php (recommended)
set_include_path('{path-to-google-api-dir}/google-api-php-client-master/src' . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';

// start request to google
try{
	// start Google client
	$client = new Google_Client();
	
	// auth
	if(!file_exists( ($GoogleClientSecretJson = '{path-to-google-json-file}/google-service-account-secret.json') ))
		throw new Exception('Google Service Secret JSON file not found.');
	
	$client->setAuthConfig($GoogleClientSecretJson);
	
	// set an application name
	$client->setApplicationName("{Your Application Name}");
	
	// set scope
	$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
	
	// start analytics service classe
	$service = new Google_Service_Analytics($client);
  
  //analytics parameters
  $analticsParams = array(
    'dimensions' => 'ga:pagePath',
    'sort' => '-ga:pageviews', 
    // 'filters' => 'ga:pagepath=~^\/blog\/[a-z0-9_-]+(\/)?$;ga:pagepath!~^\/blog\/archive(\/?)$', 
    'max-results' => 10
  );
  
  //get results from google analytics
  $results = $service->data_ga->get('ga:'.$gaViewID,  '7daysAgo', 'today', 'ga:pageviews', $analticsParams);
  
  var_dump($results->rows);

}
catch(Exception $e){
  die('Error: '.$e->getMessage());
}
?>

Beim Ausführen wird nun ein Array mit den Ergebnissen ausgegeben.

Noch ein paar Tipps zum Schluss. Um auf Nummer sicher zu gehen, würde ich die URLs mit der Seite bzw. der Datenbank abgleichen, um zu prüfen, ob diese auch tatsächlich existieren. Um doppelte Einträge zu URLs zu vermeiden, solltet ihr auch automatisch auf einen abschließenden Schrägstrich in euren URLs achten.

Die Namen zu weiteren Dimensionen und Messwerten findet ihr auf developers.google.com.

Der obige Code enthält auch einen zusätzlichen Filter, der besagt, dass nur Seiten berücksichtigt werden, die mit /blog/ beginnen und danach alphanumerisch sind. Nicht berücksichtigt soll der Pfad /blog/archive werden.

Wenn euch diese Anleitung geholfen hat, vergesst nicht dieser Seite zu folgen!

Permalink: https://to.ptmr.io/1oY892P