API Hello Analytics Reporting v4 : guide de démarrage rapide pour les comptes de service Java

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce tutoriel vous explique comment accéder à l'API Reporting v4.

1. Activer l'API

Pour commencer à utiliser l'API Reporting v4, vous devez d'abord utiliser l'outil de configuration. Celui-ci vous explique comment créer un projet dans la console Google APIs, activer l'API et créer des identifiants.

Créer des identifiants

  1. Ouvrez la page Comptes de service. Si vous y êtes invité, sélectionnez un projet.
  2. Cliquez sur Créer un compte de service, puis saisissez un nom et une description pour ce compte. Vous pouvez utiliser l'ID de compte de service par défaut ou en choisir un autre, unique. Une fois que vous avez terminé, cliquez sur Créer.
  3. La section Autorisations associées au compte de service (facultatif) qui suit n'est pas requise. Cliquez sur Continuer.
  4. Sur l'écran Autoriser les utilisateurs à accéder à ce compte de service, accédez à la section Créer une clé. Cliquez sur Créer une clé.
  5. Dans le panneau latéral qui s'affiche, sélectionnez le format de la clé. JSON est recommandé.
  6. Cliquez sur Créer. La nouvelle paire de clés publique et privée est générée et téléchargée sur votre ordinateur. Il s'agit de la seule copie dont vous disposez. Découvrez comment stocker cette clé en toute sécurité.
  7. Cliquez sur Fermer dans la boîte de dialogue Clé privée enregistrée sur votre ordinateur, puis cliquez sur OK pour afficher le tableau des comptes de service.

Ajouter un compte de service au compte Google Analytics

Le compte de service que vous venez de créer aura une adresse e-mail semblable à celle-ci:

quickstart@PROJECT-ID.iam.gserviceaccount.com

Utilisez cette adresse e-mail pour ajouter un utilisateur à la vue Google Analytics à laquelle vous souhaitez accéder via l'API. Pour ce tutoriel, seules les autorisations Read & Analyze (Lire et analyser).

2. Installer la bibliothèque cliente

Pour installer le client Java de l'API Google Analytics, vous devez télécharger un fichier ZIP contenant tous les fichiers jar que vous devez extraire et copier dans votre chemin de classe Java.

  1. Téléchargez la bibliothèque cliente Java de l'API Analytics v4, qui est regroupée dans un fichier ZIP contenant toutes les dépendances requises.
  2. Extrayez le fichier ZIP.
  3. Ajoutez tous les fichiers JAR du répertoire libs à votre chemin de classe.
  4. Ajoutez le fichier JAR google-api-services-analyticsreporting-v4-[version].jar au paramètre"classpath".

Détails de l'environnement Java

Eclipse

Pour Eclipse, consultez cette question StackOverflow pour obtenir des instructions sur l'ajout de fichiers JAR au chemin de classe de votre projet.

Haricots secs

Pour NetBeans, consultez cette question StackOverflow pour savoir comment ajouter des fichiers JAR au chemin de classe de votre projet.

IntelliJ IDEA

Pour IntelliJ IDEA, consultez cette question StackOverflow pour savoir comment ajouter des fichiers JAR au chemin de classe de votre projet.

Ligne de commande

Si vous développez à partir de la ligne de commande, ajoutez ce qui suit à vos appels de commande javac et java:

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

3. Configurer l'exemple

Vous devrez créer un seul fichier nommé HelloAnalyticsReporting.java, qui contiendra l'exemple de code fourni.

  • Copiez ou téléchargez le code source suivant dans HelloAnalyticsReporting.java.
  • Déplacez client_secrets.json précédemment téléchargé dans le même répertoire que l'exemple de code.
  • Remplacez les valeurs de KEY_FILE_LOCATION par les valeurs appropriées provenant de la Developer Console.
  • Remplacez la valeur de VIEW_ID par l'ID de la vue à laquelle vous souhaitez accéder.
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. Exécuter l'exemple

Si vous utilisez un IDE, assurez-vous qu'une cible d'exécution par défaut est définie sur la classe HelloAnalytics. Sinon, vous pouvez compiler et exécuter l'application à partir de la ligne de commande:

  • Compilez l'exemple en utilisant:

    javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
    
  • Exécutez l'exemple en utilisant:

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

Une fois ces étapes terminées, l'échantillon génère le nombre de sessions des sept derniers jours pour la vue donnée.