Hello Analytics API: Java-Kurzanleitung für Dienstkonten

In dieser Anleitung werden die Schritte beschrieben, die erforderlich sind, um auf ein Google Analytics-Konto zuzugreifen, die Analytics APIs abzufragen, die API-Antworten zu verarbeiten und die Ergebnisse auszugeben. In dieser Anleitung werden die Core Reporting API v3.0, die Management API v3.0 und OAuth 2.0 verwendet.

Schritt 1: Analytics API aktivieren

Bevor Sie die Google Analytics API verwenden können, müssen Sie zuerst das Einrichtungstool verwenden. Dieses Tool führt Sie durch die Erstellung eines Projekts in der Google API Console, die Aktivierung der API und die Erstellung von Anmeldedaten.

Client-ID erstellen

  1. Öffne die Seite Dienstkonten. Wähle ein Projekt aus, wenn du dazu aufgefordert wirst.
  2. Klicke auf Dienstkonto erstellen und gib einen Namen und eine Beschreibung für das Dienstkonto ein. Du kannst die standardmäßige Dienstkonto-ID verwenden oder eine andere eindeutige ID auswählen. Wenn du fertig bist, klicke auf Erstellen.
  3. Für den folgenden Abschnitt Dienstkontoberechtigungen (optional) sind keine Maßnahmen erforderlich. Klicke auf Weiter.
  4. Scrolle auf dem Bildschirm Nutzern Zugriff auf dieses Dienstkonto erteilen nach unten zum Abschnitt Schlüssel erstellen. Klicke auf Schlüssel erstellen.
  5. Wählen Sie in der angezeigten Seitenleiste das Format für Ihren Schlüssel aus. Empfohlen wird JSON.
  6. Klicken Sie auf Erstellen. Dein neues öffentliches/privates Schlüsselpaar wird generiert und auf deinen Computer heruntergeladen. Dies ist die einzige Kopie dieses Schlüssels. Informationen dazu, wie du den Schlüssel sicher speicherst, findest du unter Dienstkontoschlüssel verwalten.
  7. Klicke im Dialogfeld Privater Schlüssel auf deinem Computer gespeichert auf Schließen und dann auf Fertig, um zur Tabelle deiner Dienstkonten zurückzukehren.

Dienstkonto zum Google Analytics-Konto hinzufügen

Das neu erstellte Dienstkonto hat die E-Mail-Adresse <projectId>-<uniqueId>@developer.gserviceaccount.com. Verwenden Sie diese E-Mail-Adresse, um dem Google Analytics-Konto, auf das Sie über die API zugreifen möchten, einen Nutzer hinzuzufügen. Für diese Anleitung sind nur die Berechtigungen Lesen und Analysieren erforderlich.

Schritt 2: Google-Clientbibliothek installieren

Zur Installation des Google Analytics API-Java-Clients müssen Sie eine ZIP-Datei mit allen JAR-Dateien herunterladen, die Sie extrahieren und in Ihren Java-Klassenpfad kopieren müssen.

  1. Laden Sie die Google Analytics-Java-Clientbibliothek herunter, die als ZIP-Datei mit allen erforderlichen Abhängigkeiten enthalten ist.
  2. Extrahieren Sie die ZIP-Datei.
  3. Fügen Sie alle JARs im Verzeichnis libs Ihrem Klassenpfad hinzu.
  4. Fügen Sie Ihrem Klassenpfad die JAR-Datei google-api-services-analytics-v3-[version].jar hinzu.

Schritt 3: Beispiel einrichten

Sie müssen eine einzelne Datei mit dem Namen HelloAnalytics.java erstellen, die den angegebenen Beispielcode enthält.

  1. Kopieren oder laden Sie den folgenden Quellcode in HelloAnalytics.java herunter.
  2. Verschieben Sie das zuvor heruntergeladene client_secrets.JSON-Objekt in dasselbe Verzeichnis wie den Beispielcode.
  3. Ersetze die Werte von KEY_FILE_LOCATION durch die entsprechenden Werte aus der Developer Console.
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;

import com.google.api.services.analytics.Analytics;
import com.google.api.services.analytics.AnalyticsScopes;
import com.google.api.services.analytics.model.Accounts;
import com.google.api.services.analytics.model.GaData;
import com.google.api.services.analytics.model.Profiles;
import com.google.api.services.analytics.model.Webproperties;

import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.io.IOException;


/**
 * A simple example of how to access the Google Analytics API using a service
 * account.
 */
public class HelloAnalytics {


  private static final String APPLICATION_NAME = "Hello Analytics";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>";
  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();

      String profile = getFirstProfileId(analytics);
      System.out.println("First Profile Id: "+ profile);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * Initializes an Analytics service object.
   *
   * @return An authorized Analytics service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static AnalyticsReporting initializeAnalytic() throws GeneralSecurityException, IOException {

    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    GoogleCredential credential = GoogleCredential
        .fromStream(new FileInputStream(KEY_FILE_LOCATION))
        .createScoped(AnalyticsScopes.all());

    // Construct the Analytics service object.
    return new Analytics.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }


  private static String getFirstProfileId(Analytics analytics) throws IOException {
    // Get the first view (profile) ID for the authorized user.
    String profileId = null;

    // Query for the list of all accounts associated with the service account.
    Accounts accounts = analytics.management().accounts().list().execute();

    if (accounts.getItems().isEmpty()) {
      System.err.println("No accounts found");
    } else {
      String firstAccountId = accounts.getItems().get(0).getId();

      // Query for the list of properties associated with the first account.
      Webproperties properties = analytics.management().webproperties()
          .list(firstAccountId).execute();

      if (properties.getItems().isEmpty()) {
        System.err.println("No Webproperties found");
      } else {
        String firstWebpropertyId = properties.getItems().get(0).getId();

        // Query for the list views (profiles) associated with the property.
        Profiles profiles = analytics.management().profiles()
            .list(firstAccountId, firstWebpropertyId).execute();

        if (profiles.getItems().isEmpty()) {
          System.err.println("No views (profiles) found");
        } else {
          // Return the first (view) profile associated with the property.
          profileId = profiles.getItems().get(0).getId();
        }
      }
    }
    return profileId;
  }

  private static GaData getResults(Analytics analytics, String profileId) throws IOException {
    // Query the Core Reporting API for the number of sessions
    // in the past seven days.
    return analytics.data().ga()
        .get("ga:" + profileId, "7daysAgo", "today", "ga:sessions")
        .execute();
  }

  private static void printResults(GaData results) {
    // Parse the response from the Core Reporting API for
    // the profile name and number of sessions.
    if (results != null && !results.getRows().isEmpty()) {
      System.out.println("View (Profile) Name: "
        + results.getProfileInfo().getProfileName());
      System.out.println("Total Sessions: " + results.getRows().get(0).get(0));
    } else {
      System.out.println("No results found");
    }
  }
}

Schritt 4: Beispiel ausführen

Nachdem Sie die Analytics API aktiviert, die Google APIs-Clientbibliothek für Java installiert und den Beispielcode für die Ausführung eingerichtet haben

Wenn Sie eine IDE verwenden, achten Sie darauf, dass Sie ein Standardausführungsziel für die Klasse HelloAnalytics festgelegt haben. Alternativ können Sie die Anwendung über die Befehlszeile kompilieren und ausführen:

  1. Kompilieren Sie das Beispiel mit
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
    .
  2. Führen Sie das Beispiel mit
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics
    aus.

Wenn Sie diese Schritte ausgeführt haben, werden im Beispiel der Name der ersten Google Analytics-Datenansicht (Profil) des autorisierten Nutzers und die Anzahl der Sitzungen in den letzten sieben Tagen ausgegeben.

Mit dem autorisierten Analytics-Dienstobjekt können Sie jetzt beliebige Codebeispiele ausführen, die in den Referenzdokumenten zur Management API enthalten sind. Sie könnten beispielsweise versuchen, den Code mit der Methode accountSummaries.list zu ändern.