Présentation de l'API Analytics Reporting v4 ; guide de démarrage rapide Java pour les applications installées

Ce tutoriel décrit les étapes à suivre pour accéder à l'API Reporting version 4 d'Analytics.

1. Activer l'API

Pour commencer à utiliser l'API Analytics Reporting v4, vous devez d'abord utiliser l'outil de configuration, qui vous guide tout au long de la création d'un projet dans la console Google APIs, de l'activation de l'API et de la création d'identifiants.

Remarque: Pour créer un ID client Web ou un client d'application installée, vous devez définir un nom de produit sur l'écran d'autorisation. Si vous ne l'avez pas déjà fait, vous serez invité à Configurer l'écran d'autorisation.

Créer des identifiants

  • Ouvrez la page Identifiants.
  • Cliquez sur Créer des identifiants, puis sélectionnez ID client OAuth.
  • Pour le type d'application, sélectionnez Autre.
  • Nommez l'ID client quickstart et cliquez sur Créer.

Sur la page Identifiants, cliquez sur l'ID client que vous venez de créer, puis sur Télécharger le fichier JSON et enregistrez-le sous le nom client_secrets.json. Vous en aurez besoin dans la suite de ce tutoriel.

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 classpath Java.

  1. Téléchargez la bibliothèque cliente Java v4 de l'API Analytics Reporting, fournie sous forme de fichier ZIP avec toutes les dépendances requises.
  2. Extrayez le fichier ZIP.
  3. Ajoutez tous les fichiers JAR du répertoire libs au chemin de classe.
  4. Ajoutez le fichier JAR google-api-services-analyticsreporting-v4-[version].jar au chemin de classe.

Détails de l'environnement Java

Eclipse

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

NetBeans

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

IntelliJ IDEA

Pour IntelliJ IDEA, consultez cette question sur StackOverflow afin d'obtenir des instructions sur l'ajout de fichiers JAR au classpath de votre projet.

Ligne de commande

Si vous développez à partir de la ligne de commande, ajoutez le code suivant à vos appels de commande javac et java:

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

3. Configurer l'exemple

Vous devez 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 le fichier client_secrets.json précédemment téléchargé vers le même répertoire que l'exemple de code.
  • Remplacez la valeur de VIEW_ID par l'ID de la vue à laquelle vous souhaitez accéder.
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;

import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

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


/**
 * A simple example of how to access the Google Analytics API.
 */
public class HelloAnalytics {
  // Path to client_secrets.json file downloaded from the Developer's Console.
  // The path is relative to HelloAnalytics.java.
  private static final String CLIENT_SECRET_JSON_RESOURCE = "client_secrets.json";

  // Replace with your view ID.
  private static final String VIEW_ID = "<REPLACE_WITH_VIEW_ID>";

  // The directory where the user's credentials will be stored.
  private static final File DATA_STORE_DIR = new File(
      System.getProperty("user.home"), ".store/hello_analytics");

  private static final String APPLICATION_NAME = "Hello Analytics Reporting";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static NetHttpTransport httpTransport;
  private static FileDataStoreFactory dataStoreFactory;

  public static void main(String[] args) {
    try {
      Analyticsreporting service = initializeAnalyticsReporting();

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


  /**
   * Initializes an authorized Analytics Reporting service object.
   *
   * @return The analytics reporting service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static Analyticsreporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException {

    httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

    // Load client secrets.
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
        new InputStreamReader(HelloAnalytics.class
            .getResourceAsStream(CLIENT_SECRET_JSON_RESOURCE)));

    // Set up authorization code flow for all authorization scopes.
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow
        .Builder(httpTransport, JSON_FACTORY, clientSecrets,
            AnalyticsreportingScopes.all()).setDataStoreFactory(dataStoreFactory)
        .build();

    // Authorize.
    Credential credential = new AuthorizationCodeInstalledApp(flow,
        new LocalServerReceiver()).authorize("user");
    // Construct the Analytics Reporting service object.
    return new Analyticsreporting.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }

  /**
   * Query the Analytics Reporting API V4.
   * Constructs a request for the sessions for the past seven days.
   * Returns the API response.
   *
   * @param service
   * @return GetReportResponse
   * @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");

    //Create the Dimensions object.
    Dimension browser = new Dimension()
        .setName("ga:browser");

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

    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 the 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.

  • L'application charge la page d'autorisation dans un navigateur.
  • Si vous n'êtes pas encore connecté à votre compte Google, vous serez invité à le faire. Si vous êtes connecté à plusieurs comptes Google, vous êtes invité à sélectionner un compte à utiliser pour l'autorisation.

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