En este instructivo, se explican los pasos necesarios para acceder a la versión 4 de la API de Analytics Reporting.
1. Habilitar la API
Para comenzar a usar la versión 4 de la API de informes de Analytics, primero debes usar la herramienta de configuración, que te guiará para crear un proyecto en Google API Console, habilitar la API y crear credenciales.
Crea credenciales
- Abre la página Cuentas de servicio. Si se te solicita, selecciona un proyecto.
- Haz clic en Crear cuenta de servicio y, luego, ingresa un nombre y una descripción para la cuenta de servicio. Puedes usar el ID predeterminado de la cuenta de servicio o elegir uno que sea único y diferente. Cuando hayas terminado, haz clic en Crear.
- No es obligatoria la sección de Permisos de cuenta de servicio (opcional) que aparece a continuación. Haz clic en Continuar.
- En la pantalla Otorga a usuarios acceso a esta cuenta de servicio, desplázate hacia abajo hasta encontrar la sección Crear clave. Haz clic en Crear clave.
- En el panel lateral que aparece, selecciona el formato para tu clave: se recomienda el código JSON.
- Haga clic en Crear. Ya se generó y descargó el nuevo par de claves pública y privada en tu equipo, que será la única copia. Para obtener más información a fin de almacenarla de forma segura, consulta Cómo administrar claves para cuentas de servicio.
- Haz clic en Cerrar, en el diálogo Se guardó la clave privada en tu computadora, y luego haz clic en Listo para regresar a la tabla de tus cuentas de servicio.
Cómo agregar una cuenta de servicio a la cuenta de Google Analytics
La cuenta de servicio recién creada tendrá una dirección de correo electrónico similar a esta:
quickstart@PROJECT-ID.iam.gserviceaccount.com
Utilice esta dirección de correo electrónico para agregar un usuario a la vista de Google Analytics a la que desea acceder a través de la API. Para este instructivo, solo se necesitan los permisos de lectura y análisis.
2. Instala la biblioteca cliente
Para instalar el cliente de Java de la API de Google Analytics, debe descargar un archivo ZIP que contenga todos los archivos jar que necesita extraer y copiar en la ruta de clase de Java.
- Descargue la biblioteca cliente de la API de Analytics v4 para Java, que se incluye como un archivo ZIP con todas las dependencias necesarias.
- Extrae el archivo ZIP.
- Agrega todos los archivos JAR dentro del directorio
libs
a la ruta de clase. - Agrega el jar
google-api-services-analyticsreporting-v4-[version].jar
a la ruta de clase.
Detalles del entorno de Java
Eclipse
Para Eclipse, consulta esta pregunta de Stack Overflow a fin de obtener instrucciones para agregar archivos JAR a la ruta de clase de tu proyecto.
NetBeans
Para NetBeans, consulta esta pregunta de Stack Overflow a fin de obtener instrucciones para agregar archivos JAR a la ruta de clase de tu proyecto.
IntelliJ IDEA
Para IntelliJ IDEA, consulta esta pregunta de Stack Overflow a fin de obtener instrucciones para agregar archivos JAR a la ruta de clase de tu proyecto.
Línea de comandos
Si desarrollas desde la línea de comandos, agrega lo siguiente a tus invocaciones de comando javac
y java
:
-classpath /path/to/directory/with/unzipped/jars
3. Configura la muestra
Tendrás que crear un solo archivo llamado HelloAnalyticsReporting.java
, que contendrá el código de muestra dado.
- Copia o descarga el siguiente código fuente en
HelloAnalyticsReporting.java
.
- Mueve el
client_secrets.json
descargado anteriormente al mismo directorio que el código de muestra. - Reemplaza los valores de
KEY_FILE_LOCATION
por los valores correspondientes de Developer Console.
- Reemplaza el valor de
VIEW_ID
por el ID de la vista a la que deseas 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 la muestra
Si usas un IDE, asegúrate de tener establecido un objetivo de ejecución predeterminado en la clase HelloAnalytics
.
De lo contrario, puedes compilar y ejecutar la aplicación desde la línea de comandos:
Compila la muestra con el siguiente comando:
javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
Ejecuta la muestra con el siguiente comando:
java -classpath '.:/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting
Cuando finalice estos pasos, la muestra mostrará la cantidad de sesiones de los últimos siete días para la vista determinada.