Hello Analytics Reporting API v4; Java-Kurzanleitung für Dienstkonten

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Diese Anleitung führt Sie durch die erforderlichen Schritte für den Zugriff auf die Analytics Reporting API v4.

1. API aktivieren

Damit Sie die Analytics Reporting API v4 verwenden können, müssen Sie zuerst das Einrichtungstool verwenden. Es führt Sie durch die Erstellung eines Projekts in der Google API Console, durch das Aktivieren der API und durch das Erstellen von Anmeldedaten.

Anmeldedaten 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 eine E-Mail-Adresse, die ungefähr so aussieht:

quickstart@PROJECT-ID.iam.gserviceaccount.com

Verwenden Sie diese E-Mail-Adresse, um einen Nutzer zur Google Analytics-Datenansicht hinzuzufügen, auf die Sie über die API zugreifen möchten. Für diese Anleitung sind nur Lese- und Analyseberechtigungen erforderlich.

2. Clientbibliothek installieren

Um den Google Analytics API-Java-Client zu installieren, 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 Java-Clientbibliothek der Analytics Reporting API Version 4 herunter. Sie ist als ZIP-Datei mit allen erforderlichen Abhängigkeiten gebündelt.
  2. Extrahieren Sie die ZIP-Datei.
  3. Fügen Sie Ihrem Klassenpfad alle JARs im Verzeichnis libs hinzu.
  4. Fügen Sie Ihrem Klassenpfad die JAR-Datei google-api-services-analyticsreporting-v4-[version].jar hinzu.

Details zur Java-Umgebung

Eclipse

Informationen zu Eclipse finden Sie in dieser StackOverflow-Frage. Darin wird beschrieben, wie Sie JARs zum Klassenpfad Ihres Projekts hinzufügen.

NetBeans

Informationen zu NetBeans finden Sie in dieser StackOverflow-Frage. Dort erfahren Sie, wie Sie JARs zum Klassenpfad Ihres Projekts hinzufügen.

IntelliJ IDEA

Informationen zu IntelliJ IDEA finden Sie in dieser StackOverflow-Frage. Darin wird beschrieben, wie Sie JARs zum Klassenpfad Ihres Projekts hinzufügen.

Befehlszeile

Wenn Sie über die Befehlszeile entwickeln, fügen Sie den Befehlen javac und java Folgendes hinzu:

-classpath /path/to/directory/with/unzipped/jars

3. Beispiel einrichten

Sie müssen eine einzelne Datei namens HelloAnalyticsReporting.java erstellen, die den angegebenen Beispielcode enthält.

  • Verschieben Sie die zuvor heruntergeladene Datei client_secrets.json in dasselbe Verzeichnis wie den Beispielcode.
  • Ersetzen Sie die Werte von KEY_FILE_LOCATION durch die entsprechenden Werte aus der Entwicklerkonsole.
  • Ersetzen Sie den Wert von VIEW_ID durch die ID der Ansicht, auf die Sie zugreifen möchten.
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 java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.google.api.services.analyticsreporting.v4.AnalyticsReportingScopes;
import com.google.api.services.analyticsreporting.v4.AnalyticsReporting;

import com.google.api.services.analyticsreporting.v4.model.ColumnHeader;
import com.google.api.services.analyticsreporting.v4.model.DateRange;
import com.google.api.services.analyticsreporting.v4.model.DateRangeValues;
import com.google.api.services.analyticsreporting.v4.model.GetReportsRequest;
import com.google.api.services.analyticsreporting.v4.model.GetReportsResponse;
import com.google.api.services.analyticsreporting.v4.model.Metric;
import com.google.api.services.analyticsreporting.v4.model.Dimension;
import com.google.api.services.analyticsreporting.v4.model.MetricHeaderEntry;
import com.google.api.services.analyticsreporting.v4.model.Report;
import com.google.api.services.analyticsreporting.v4.model.ReportRequest;
import com.google.api.services.analyticsreporting.v4.model.ReportRow;

public class HelloAnalyticsReporting {
  private static final String APPLICATION_NAME = "Hello Analytics Reporting";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>";
  private static final String VIEW_ID = "<REPLACE_WITH_VIEW_ID>";
  public static void main(String[] args) {
    try {
      AnalyticsReporting service = initializeAnalyticsReporting();

      GetReportsResponse response = getReport(service);
      printResponse(response);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

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

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

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

  /**
   * Queries the Analytics Reporting API V4.
   *
   * @param service An authorized Analytics Reporting API V4 service object.
   * @return GetReportResponse The Analytics Reporting API V4 response.
   * @throws IOException
   */
  private static GetReportsResponse getReport(AnalyticsReporting service) throws IOException {
    // Create the DateRange object.
    DateRange dateRange = new DateRange();
    dateRange.setStartDate("7DaysAgo");
    dateRange.setEndDate("today");

    // Create the Metrics object.
    Metric sessions = new Metric()
        .setExpression("ga:sessions")
        .setAlias("sessions");

    Dimension pageTitle = new Dimension().setName("ga:pageTitle");

    // Create the ReportRequest object.
    ReportRequest request = new ReportRequest()
        .setViewId(VIEW_ID)
        .setDateRanges(Arrays.asList(dateRange))
        .setMetrics(Arrays.asList(sessions))
        .setDimensions(Arrays.asList(pageTitle));

    ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
    requests.add(request);

    // Create the GetReportsRequest object.
    GetReportsRequest getReport = new GetReportsRequest()
        .setReportRequests(requests);

    // Call the batchGet method.
    GetReportsResponse response = service.reports().batchGet(getReport).execute();

    // Return the response.
    return response;
  }

  /**
   * Parses and prints the Analytics Reporting API V4 response.
   *
   * @param response An Analytics Reporting API V4 response.
   */
  private static void printResponse(GetReportsResponse response) {

    for (Report report: response.getReports()) {
      ColumnHeader header = report.getColumnHeader();
      List<String> dimensionHeaders = header.getDimensions();
      List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries();
      List<ReportRow> rows = report.getData().getRows();

      if (rows == null) {
         System.out.println("No data found for " + VIEW_ID);
         return;
      }

      for (ReportRow row: rows) {
        List<String> dimensions = row.getDimensions();
        List<DateRangeValues> metrics = row.getMetrics();

        for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
          System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
       	}

        for (int j = 0; j < metrics.size(); j++) {
          System.out.print("Date Range (" + j + "): ");
          DateRangeValues values = metrics.get(j);
          for (int k = 0; k < values.getValues().size() && k < metricHeaders.size(); k++) {
            System.out.println(metricHeaders.get(k).getName() + ": " + values.getValues().get(k));
          }
        }
      }
    }
  }
}

4. Beispiel ausführen

Wenn Sie eine IDE verwenden, muss als Standardausführungsziel die Klasse HelloAnalytics festgelegt sein. Andernfalls können Sie die Anwendung über die Befehlszeile kompilieren und ausführen:

  • Stellen Sie das Beispiel zusammen mit:

    javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
    
  • Führen Sie das Beispiel mit dem folgenden Befehl aus:

    java -classpath '.:/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting
    

Wenn Sie diese Schritte abgeschlossen haben, gibt das Beispiel die Anzahl der Sitzungen für die angegebene Datenansicht in den letzten sieben Tagen aus.