Con la ayuda de este tutorial podrás seguir los pasos para acceder a la versión 4 de la API de informes de Analytics.
1. Habilitar la API
Para empezar a utilizar la versión 4 de la API de informes de Analytics, primero debes usar la herramienta de configuración, que te guiará por los pasos necesarios para crear un proyecto en la consola de APIs de Google, habilitar la API y crear las credenciales.
Crear credenciales
- Abre la página Cuentas de servicio. Si se te solicita, selecciona un proyecto.
- Haz clic en Create service account (Crear cuenta de servicio).
- En la ventana Crear cuenta de servicio, escribe el nombre de la cuenta de servicio y selecciona Suministrar una nueva clave privada. A continuación, haz clic en Guardar.
Se genera el par de claves pública/privada y se descarga en el equipo; esta es la copia única de la clave. Eres responsable de almacenarla de forma segura.
Agregar una cuenta de servicio a la cuenta de Google Analytics
La dirección de correo electrónico de la cuenta de servicio que acabas de crear será parecida a esta:
quickstart@PROJECT-ID.iam.gserviceaccount.com
Úsala para agregar un usuario a la vista de Google Analytics a la que quieras acceder a través de la API. En este tutorial solo se necesitan permisos de lectura y análisis.
2. Instalar la biblioteca de cliente
Para instalar el cliente Java de la API de Google Analytics, debes descargar un archivo .zip que contiene todos los archivos .jar necesarios, extraerlos y copiarlos en la ruta de clases de Java.
- Descarga la biblioteca de cliente Java de la API de informes de Analytics, versión 4, que está incluida en un archivo .zip con todos los archivos necesarios.
- Descomprime el archivo .zip.
- Agrega todos los archivos jar del directorio
libs
a tu ruta de clases. - Agrega el archivo jar
google-api-services-analyticsreporting-v4-[version].jar
a tu ruta de clases.
Datos del entorno Java
Eclipse
Si usas Eclipse, lee esta pregunta de StackOverflow para saber cómo añadir los archivos JAR a la ruta de clases de tu proyecto.
NetBeans
Si usas NetBeans, lee esta pregunta de StackOverflow para saber cómo añadir los archivos JAR a la ruta de clases de tu proyecto.
IntelliJ IDEA
Si usas IntelliJ IDEA, lee esta pregunta de StackOverflow para saber cómo añadir los archivos JAR a la ruta de clases de tu proyecto.
Línea de comandos
Si trabajas desde la línea de comandos, añade el código siguiente en las invocaciones de los comandos javac
y java
:
-classpath /path/to/directory/with/unzipped/jars
3 Configurar el código de muestra
Deberás crear un archivo denominado HelloAnalyticsReporting.java
, que contendrá el código de muestra indicado.
- Copia o descarga el código fuente siguiente en
HelloAnalyticsReporting.java
.
- Traslada el archivo
client_secrets.json
descargado anteriormente al mismo directorio en el que se encuentra el código de muestra. - Sustituye los valores de
KEY_FILE_LOCATION
por los valores adecuados de Developers Console.
- Sustituye el valor de
VIEW_ID
por el ID de la vista a la que quieras acceder.
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. Ejecutar el código de muestra
Si utilizas un IDE, comprueba que tengas un destino de ejecución predeterminado configurado como clase HelloAnalytics
.
De lo contrario, puedes compilar y ejecutar la aplicación desde la línea de comandos:
Compila muestra con el siguiente comando:
javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
Ejecuta el código de muestra con el siguiente comando:
java -classpath '.:/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting
Cuando finalices estos pasos, el código de muestra enviará el número de sesiones de los últimos siete días correspondiente a la vista indicada.