API de Multi-Channel Funnels Reporting: Guía para desarrolladores

En este documento, se explica cómo usar la API de Embudos multicanales para acceder a los datos de Embudos multicanales.

Introducción

La API de Embudos multicanales proporciona acceso a datos tabulares en los informes estándares y personalizados de Embudos multicanales. Para acceder a los datos, crea una consulta que especifique la vista (perfil), las fechas de inicio y finalización y las dimensiones y métricas que conforman los encabezados de columna en la tabla. Esta consulta se envía a la API de Multi-Channel Funnels Reporting y la API de Multi-Channel Funnels Reporting muestra todos los datos en forma de tabla.

Si es la primera vez que utilizas la API, lee la Descripción general de la API de informes de embudos multicanales para obtener una introducción al propósito de la API de Embudos multicanales y los datos que proporciona.

Antes de comenzar

En esta guía, se usa la biblioteca cliente de Java para acceder a la API de informes de embudos multicanales. Cada biblioteca cliente proporciona un solo objeto de servicio de Analytics para llamar a la API de Multi-Channel Funnels Reporting y obtener los datos. Si no usas una biblioteca cliente para acceder a la API, lee la API de informes de embudos multicanales: Guía de referencia.

Para crear el objeto de servicio de Analytics, sigue estos pasos:

  1. Registra tu aplicación en la Consola de API de Google.
  2. Autoriza el acceso a los datos de Google Analytics.
  3. Escribe código para crear el objeto de servicio de Analytics.

Si no completaste estos pasos, detente y lee el instructivo de la API de Hello Analytics, que te guiará a través de los pasos iniciales para compilar una aplicación de la API de Google Analytics. Después de completar el tutorial, continúa leyendo la siguiente guía.

Por ejemplo, el siguiente código crea un objeto de servicio autorizado de Analytics:

Java

Analytics analytics = initializeAnalytics();

Usa el objeto de servicio de Analytics analytics para llamar a la API de informes de embudos multicanales.

Descripción general

Si quieres usar la API de Multi-Channel Funnels Reporting para recuperar datos, escribe una aplicación en lo siguiente:

  1. Consultar la API de Informes de embudos multicanales
  2. Trabajar con los resultados que muestra la API

Consulta la API de Multi-Channel Funnels Reporting

Para solicitar datos de la API de Multi-Channel Funnels Reporting, haz lo siguiente:

  1. Compilar un objeto de consulta de la API de informes de embudos multicanales
  2. Usa el objeto de consulta para solicitar los datos de los servidores de Embudos multicanales.

Crea una consulta de la API de informes de embudos multicanales

Para compilar un objeto de consulta de la API de Multi-Channel Funnels Reporting, llama a este método:

analytics.data.mcf.get()    // analytics is the Analytics service object

El primer parámetro que se proporciona al método es un ID de tabla único con el formato ga:XXXX, en el que XXXX es el ID de una vista (perfil) de Analytics que contiene los datos solicitados. Usa el objeto de consulta para especificar parámetros de consulta (es decir, setDimensions). Por ejemplo:

Java

Get apiQuery = analytics.data().mcf()
    .get(tableId,
        "2012-01-01",              // Start date
        "2012-03-31",              // End date
        "mcf:totalConversions")    // Metrics
    .setDimensions("mcf:sourcePath")
    .setSort("-mcf:totalConversions")
    .setMaxResults(25);

Para obtener una lista de todos los parámetros de consulta, visita el Resumen de parámetros de consulta. Los parámetros de métricas y dimensiones te permiten especificar qué datos de Embudos multicanales quieres recuperar. Para obtener una lista de todas las dimensiones y métricas, consulta la Referencia de dimensiones y métricas.

Cómo realizar una solicitud de datos a la API de Multi-Channel Funnels Reporting

Después de crear el objeto de consulta, llama al método execute en el objeto para solicitar datos de los servidores de Embudos multicanales. Por ejemplo:

Java

try {
  apiQuery.execute();
  // Success. Do something cool!

} catch (GoogleJsonResponseException e) {
  // Catch API specific errors.
  handleApiError(e);

} catch (IOException e) {
  // Catch general parsing network errors.
  e.printStackTrace();
}

Si prefieres acceder a la respuesta de la API sin procesar, llama al método executeUnparsed() en el objeto de consulta:

HttpResponse response = apiQuery.executeUnparsed();

Si la consulta es exitosa, se mostrarán los datos solicitados. Si se produce un error, el método execute genera una excepción que contiene un código de estado para el error y una descripción. La aplicación debería detectar y manejar la excepción.

Trabaja con los resultados de la API

Si la consulta de la API de Informes de embudos multicanales es correcta, se mostrarán los datos de informes y la información sobre los datos.

Datos de informes de Embudos multicanales

La consulta muestra los siguientes datos de informes tabulares:

  • Datos de encabezados de columna
  • Datos de la fila

Datos de encabezados de columna

La respuesta de la consulta tiene un campo de encabezado de columna que contiene la información de encabezado de la tabla. El campo es una lista (o un array) de objetos ColumnHeaders, cada uno de los cuales contiene el nombre de la columna, el tipo de columna y el tipo de datos de la columna. El orden de las columnas son las columnas de dimensiones seguidas de las de métricas en el mismo orden que se especificó en la consulta original. Por ejemplo, el siguiente método imprime los encabezados de las columnas:

Java

private static void printColumnHeaders(McfData mcfData) {
  System.out.println("Column Headers:");

  for (ColumnHeaders header : mcfData.getColumnHeaders()) {
    System.out.println("Column Name: " + header.getName());
    System.out.println("Column Type: " + header.getColumnType());
    System.out.println("Column Data Type: " + header.getDataType());
  }
}

Datos de la fila

Los datos principales que muestra la API se muestran como un List bidimensional de McfData.Rows. Cada McfData.Rows representa una sola celda que es un valor primitivo de tipo String o un valor de ruta de conversión de tipo McfData.Rows.ConversionPathValue. El orden de las celdas en una fila es el mismo que el de los campos del objeto de encabezado de columna descrito anteriormente.

Dado que los datos de cada celda se muestran como una cadena o como un tipo de secuencia de Embudos multicanales, el campo DataType en cada objeto de encabezado de columna es particularmente útil para analizar valores en los tipos adecuados. Consulta la guía de referencia para conocer todos los tipos de datos posibles.

Por ejemplo, el siguiente método imprime los encabezados y las filas de la tabla:

Java

private static void printDataTable(McfData mcfData) {
  System.out.println("Data Table:");
  if (mcfData.getTotalResults() > 0) {
    // Print the column names.
    List<ColumnHeaders> headers = mcfData.getColumnHeaders();
    for (ColumnHeaders header : headers) {
      System.out.print(header.getName());
    }
    System.out.println();

    // Print the rows of data.
    for (List<McfData.Rows> row : mcfData.getRows()) {
      for (int columnIndex = 0; columnIndex < row.size(); ++columnIndex) {
        ColumnHeaders header = headers.get(columnIndex);
        McfData.Rows cell = row.get(columnIndex);
        if (header.getDataType().equals("MCF_SEQUENCE")) {
          System.out.print(getStringFromMcfSequence(cell.getConversionPathValue()));
        } else {
          System.out.print(cell.getPrimitiveValue());
        }
      }
      System.out.println();
    }
  } else {
    System.out.println("No rows found");
  }
}

En el siguiente ejemplo, se muestra cómo analizar un objeto de tipo de secuencia de Embudos multicanales y convertirlo en una cadena:

Java

private static String getStringFromMcfSequence(List<McfData.Rows.ConversionPathValue> path) {
  StringBuilder stringBuilder = new StringBuilder();
  for (McfData.Rows.ConversionPathValue pathElement : path) {
    if (stringBuilder.length() > 0)
      stringBuilder.append(" > ");
    stringBuilder.append(pathElement.getNodeValue());
  }
  return stringBuilder.toString();
}

Información del informe

Además de los datos de informes, la consulta muestra información sobre los datos (por ejemplo, el ID de informe). Por ejemplo, el siguiente método imprime la información del informe:

Java

private static void printReportInfo(McfData mcfData) {
  System.out.println("Report Info:");
  System.out.println("ID:" + mcfData.getId());
  System.out.println("Self link: " + mcfData.getSelfLink());
  System.out.println("Kind: " + mcfData.getKind());
  System.out.println("Contains Sampled Data: " + mcfData.getContainsSampledData());
}

El campo containsSampledData te indica si se muestreó la respuesta de la consulta. Debido a que el muestreo puede afectar los resultados de la consulta, los valores muestreados que muestra la consulta (API) no coinciden con los que se muestran en la interfaz web. Consulta Muestreo para obtener más detalles.

Ver información (perfil)

La respuesta a la consulta incluye el ID de la propiedad web, el ID y el nombre de la vista (perfil), y el ID de la cuenta de Analytics que contiene la vista (perfil). Por ejemplo, el siguiente método las imprime en la terminal (salida estándar):

Java

private static void printProfileInfo(McfData mcfData) {
  ProfileInfo profileInfo = mcfData.getProfileInfo();

  System.out.println("View (Profile) Info:");
  System.out.println("Account ID: " + profileInfo.getAccountId());
  System.out.println("Web Property ID: " + profileInfo.getWebPropertyId());
  System.out.println("Internal Web Property ID: " + profileInfo.getInternalWebPropertyId());
  System.out.println("View (Profile) ID: " + profileInfo.getProfileId());
  System.out.println("View (Profile) Name: " + profileInfo.getProfileName());
  System.out.println("Table ID: " + profileInfo.getTableId());
}

Información de consulta

La respuesta a la consulta incluye un objeto Query que contiene los valores de todos los parámetros de consulta de la solicitud de datos. Por ejemplo, el siguiente método imprime los valores de esos parámetros:

Java

private static void printQueryInfo(McfData mcfData) {
  Query query = mcfData.getQuery();

  System.out.println("Query Info:");
  System.out.println("Ids: " + query.getIds());
  System.out.println("Start Date: " + query.getStartDate());
  System.out.println("End Date: " + query.getEndDate());
  System.out.println("Metrics: " + query.getMetrics());       // List of Analytics metrics
  System.out.println("Dimensions: " + query.getDimensions()); // List of Analytics dimensions
  System.out.println("Sort: " + query.getSort());             // List of sorte metrics or dimensions
  System.out.println("Segment: " + query.getSegment());
  System.out.println("Filters: " + query.getFilters());
  System.out.println("Start Index: " + query.getStartIndex());
  System.out.println("Max Results: " + query.getMaxResults());
}

Los métodos que no sean query.getMetrics(), query.getDimensions() y query.getSort() muestran un String. Por ejemplo, query.getStartDate() muestra la fecha de inicio (un String) del informe.

Información de paginación

Cualquier solicitud a la API de Informes de embudos multicanales puede coincidir con cientos de miles de filas de datos de Embudos multicanales. La API de informes de embudos multicanales mostrará solo un subconjunto, al que se hace referencia como una sola página de los datos, en un momento determinado. Para recuperar todas las páginas de datos, usa el campo de paginación. El siguiente método imprime la información de paginación:

Java

private static void printPaginationInfo(McfData mcfData) {
  System.out.println("Pagination Info:");
  System.out.println("Previous Link: " + mcfData.getPreviousLink());
  System.out.println("Next Link: " + mcfData.getNextLink());
  System.out.println("Items Per Page: " + mcfData.getItemsPerPage());
  System.out.println("Total Results: " + mcfData.getTotalResults());
}

La llamada de método mcfData.getTotalResults() muestra la cantidad total de filas de la consulta, que puede ser mayor que la cantidad total de filas que muestra la consulta. Y la llamada de método mcfData.getItemsPerPage() muestra la cantidad máxima de filas que puede contener la respuesta a la consulta.

La llamada de método mcfData.getPreviousLink() muestra el vínculo a la página anterior y mcfData.getNextLink() el vínculo a la página siguiente.

Totales de todos los resultados

Para obtener los valores totales de las métricas solicitadas en todos los resultados, no solo los que se muestran en la respuesta a la consulta, llama al método getTotalsForAllResults() en la respuesta a la consulta, un objeto McfData. Usa los valores totales para calcular los promedios.

Java

private static void printTotalsForAllResults(McfData mcfData) {
  System.out.println("Metric totals over all results:");
  Map<String, String> totalsMap = mcfData.getTotalsForAllResults();
  for (Map.Entry<String, String> entry : totalsMap.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
  }
}

Muestra de trabajo

Java

Biblioteca cliente de Java de la API de Google Ejemplo de la API de Multi-Channel Funnels Reporting