Esta es una guía para desarrolladores de la versión 4 de la API de Analytics Reporting. Para obtener una referencia detallada de la API, consulta la referencia de la API.
Informes
La API de informes de Analytics v4 proporciona el método batchGet para acceder al recurso Informes.
En las siguientes secciones, se describe la estructura del cuerpo de la solicitud para batchGet
y la del cuerpo de la respuesta de batchGet
.
Cuerpo de la solicitud
Para usar la API de informes de Analytics v4 a fin de solicitar datos, debes construir un objeto ReportRequest, que tiene estos requisitos mínimos:
- Un ID de vista válido para el campo viewId.
- Al menos una entrada válida en el campo dateRanges.
- Al menos una entrada válida en el campo metrics.
Para encontrar un ID de vista, consulta el método de resúmenes de cuentas o usa el Explorador de cuentas.
Si no se proporciona un período, el predeterminado es {"startDate": "7daysAgo", "endDate": "yesterday"}
.
A continuación, se muestra una solicitud de ejemplo con los campos obligatorios mínimos:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [{"startDate": "2014-11-01", "endDate": "2014-11-30"}],
"metrics": [{"expression": "ga:users"}]
}
]
}
El método batchGet
acepta un máximo de cinco objetos ReportRequest. Todas las solicitudes deben tener las mismas dateRange
, viewId
, segments
, samplingLevel
y cohortGroup
.
Cuerpo de la respuesta
El cuerpo de la respuesta de la solicitud a la API es un arreglo de objetos Report. La estructura del informe se define en el objeto ColumnHeader, que describe las dimensiones y las métricas, y sus tipos de datos en el informe. Los valores de las dimensiones y métricas se especifican en el campo data.
A continuación, se muestra una respuesta de ejemplo para la solicitud de ejemplo anterior:
{
"reports": [
{
"columnHeader": {
"metricHeader": {
"metricHeaderEntries": [
{
"name": "ga:users",
"type": "INTEGER"
}
]
}
},
"data": {
"isDataGolden": true,
"maximums": [
{
"values": [
"98"
]
}
],
"minimums": [
{
"values": [
"98"
]
}
],
"rowCount": 1,
"rows": [
{
"metrics": [
{
"values": [
"98"
]
}
]
}
],
"totals": [
{
"values": [
"98"
]
}
]
}
}
]
}
Métricas
Las métricas son medidas cuantitativas; cada solicitud requiere al menos un objeto Metric.
En el siguiente ejemplo, la métrica Sessions
se proporciona al método batchGet
para obtener la cantidad total de sesiones en el período especificado:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [{"startDate": "2014-11-01", "endDate": "2014-11-30"}],
"metrics": [{"expression": "ga:sessions"}]
}
]
}
Puede usar el explorador de dimensiones y métricas o la API de metadatos para obtener la lista de dimensiones y métricas disponibles.
Filtros
Cuando envías una solicitud batchGet
, puedes pedirle que muestre solo métricas que cumplan con criterios específicos. Para filtrar métricas, en el cuerpo de la solicitud, especifica uno o más MetricFilterClauses y, en cada MetricFilterClause
, define uno o más MetricFilters.
En cada MetricFilter
, especifica los valores para lo siguiente:
metricName
not
operator
comparisonValue
Deja que {metricName}
represente la métrica, {operator}
la operator
y {comparisonValue}
la comparisonValue
. Luego, el filtro funciona de la siguiente manera:
if {metricName} {operator} {comparisonValue}
return the metric
Si especificas true
para not
, el filtro funciona de la siguiente manera:
if {metricName} {operator} {comparisonValue}
do not return the metric
En el siguiente ejemplo, batchGet
solo muestra las páginas vistas cuyo valor es mayor que 2:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics": [
{"expression": "ga:pageviews"},
{"expression": "ga:sessions"}
],
"metricFilterClauses": [{
"filters": [{
"metricName": "ga:pageviews",
"operator": "GREATER_THAN",
"comparisonValue": "2"
}]
}]
}]
}
Expresiones
Una expresión de métrica es una expresión matemática que defines en métricas existentes; funciona como métricas calculadas dinámicas. Puedes definir un alias para representar la expresión de métrica, por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics":
[
{
"expression": "ga:goal1completions/ga:users",
"alias": "completions per user"
}
]
}
]
}
Orden
Para ordenar los resultados por valor de métrica, sigue estos pasos:
- Proporciona su nombre o alias en el campo
fieldName
. - Especifica el orden de clasificación (
ASCENDING
oDESCENDING
) a través del camposortOrder
.
En el siguiente ejemplo, batchGet
muestra las métricas ordenadas primero por sesiones y, luego, por páginas vistas en orden descendente:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics":
[
{"expression": "ga:pageviews"},
{"expression": "ga:sessions"}
],
"orderBys":
[
{"fieldName": "ga:sessions", "sortOrder": "DESCENDING"},
{"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}
]
}
]
}
Dimensiones
Las dimensiones describen las características de los usuarios, sus sesiones y acciones.
La dimensión Ciudad, por ejemplo, describe una característica de las sesiones e indica la ciudad (París, Nueva York) donde se originó cada sesión.
En una solicitud batchGet
, puedes especificar cero o más objetos de dimensión, por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges":
[
{"endDate": "2014-11-30", "startDate": "2014-11-01"}
],
"metrics":
[
{"expression": "ga:users"}
],
"dimensions":
[
{"name": "ga:city"}
]
}
]
}
Filtros
Cuando envías una solicitud batchGet
, puedes pedirle que muestre solo las dimensiones que cumplan con criterios específicos. Para filtrar las dimensiones, en el cuerpo de la solicitud, especifica una o más DimensionsFilterClauses y, en cada DimensionsFilterClause
, define uno o más DimensionsFilters.
En cada DimensionsFilters
, especifica los valores para lo siguiente:
dimensionName
not
operator
expressions
caseSensitive
Deja que {dimensionName}
represente la dimensión, {operator}
la operator
y {expressions}
la expressions
. Luego, el filtro funciona de la siguiente manera:
if {dimensionName} {operator} {expressions}
return the dimension
Si especificas true
para not
, el filtro funciona de la siguiente manera:
if {dimensionName} {operator} {expressions}
do not return the dimension
En el siguiente ejemplo, batchGet
muestra páginas vistas y sesiones en un navegador Chrome:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [
{"endDate": "2014-11-30", "startDate": "2014-11-01"}
],
"metrics": [
{"expression": "ga:pageviews"},
{"expression": "ga:sessions"}
],
"dimensions": [{"name": "ga:browser"}, {"name": "ga:country"}],
"dimensionFilterClauses": [
{
"filters": [
{
"dimensionName": "ga:browser",
"operator": "EXACT",
"expressions": ["Chrome"]
}
]
}
]
}
]
}
Orden
Para ordenar los resultados por valor de dimensión, siga estos pasos:
- Proporciona su nombre en el campo
fieldName
. - Especifica el orden de clasificación (
ASCENDING
oDESCENDING
) en el camposortOrder
.
Por ejemplo, el siguiente batchGet
muestra las dimensiones ordenadas por país y, luego, por navegador:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics": [{"expression": "ga:sessions"}],
"dimensions": [{"name": "ga:country"},{"name": "ga:browser"}],
"orderBys": [
{"fieldName": "ga:country"},
{"fieldName": "ga:browser"}
]
}
]
}
Depósitos de histogramas
Para las dimensiones con valores de números enteros, es más fácil comprender sus características si agrupas sus valores en rangos. Usa el campo histogramBuckets
para definir los rangos de los depósitos resultantes y especifica HISTOGRAM_BUCKET
como el tipo de pedido, por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics": [{"expression": "ga:sessions"}],
"dimensions": [
{
"name": "ga:sessionCount",
"histogramBuckets": ["1","10","100","200","400"]
}
],
"orderBys": [
{
"fieldName": "ga:sessionCount",
"orderType": "HISTOGRAM_BUCKET"
}
]
}
]
}
Varios períodos
La API de informes de Google Analytics v4 te permite obtener datos en varios períodos en una sola solicitud. Si tu solicitud especifica uno o dos períodos, los datos se muestran en el objeto dateRangeValue, por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [
{"startDate": "2014-11-01", "endDate": "2014-11-30"},
{"startDate": "2014-10-01", "endDate": "2014-10-30"}
],
"metrics": [
{"expression": "ga:pageviews"},
{"expression": "ga:sessions"}
],
"dimensions": [{"name": "ga:pageTitle"}]
}
]
}
Orden delta
Cuando solicitas valores de métricas en dos períodos, puedes ordenar los resultados según la diferencia entre los valores de la métrica en los períodos, por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [
{"startDate": "2014-11-01", "endDate": "2014-11-30"},
{"startDate": "2014-10-01", "endDate": "2014-10-30"}
],
"metrics": [
{"expression": "ga:pageviews"},
{"expression": "ga:sessions"}
],
"dimensions": [{"name": "ga:pageTitle"}],
"orderBys": [
{
"fieldName": "ga:sessions",
"orderType": "DELTA"
}
]
}
]
}
Comportamiento de la dimensión de fecha
Si solicitas una dimensión relacionada con una fecha o una hora, el objeto DateRangeValue contendrá solo valores para las fechas que se encuentran dentro de los rangos respectivos; todos los demás valores que no estén en los períodos especificados serán 0
.
Por ejemplo, considera una solicitud para la dimensión ga:date
y la métrica ga:sessions
en dos períodos: enero y febrero.
En la respuesta para los datos solicitados en enero, los valores en febrero serán 0
y en la respuesta para los datos solicitados en febrero, los valores en enero serán 0
.
Informe de enero
{
"dimensions": [
"20140101" # `ga:date` dimension value for January 1, 2014.
],
"metrics": [
{
"values": [ # January DateRangeValue.
"8"
]
},
{
"values": [ # February DateRangeValue.
"0"
]
}
]
},
...
Informe de febrero
{
"dimensions": [
"20140201" # `ga:date` dimension value for February 1, 2014.
],
"metrics": [
{
"values": [ # January DateRangeValue.
"0"
]
},
{
"values": [ # February DateRangeValue.
"7"
]
}
]
},
...
Segmentos
Para solicitar un subconjunto de tus datos de Analytics, usa segmentos. Por ejemplo, puedes definir usuarios de un país o una ciudad en particular en un segmento, y usuarios que visitan una parte específica de tu sitio en otro. Los filtros solo muestran filas que satisfacen una condición, mientras que los segmentos muestran un subconjunto de usuarios, sesiones o eventos que cumplen con las condiciones que contienen los segmentos.
Cuando realices una solicitud con segmentos, asegúrate de lo siguiente:
- Cada ReportRequest dentro de un método
batchGet
debe contener definiciones de segmentos idénticas. - Agrega
ga:segment
a la lista de dimensiones.
Por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests": [
{
"viewId": "XXXX",
"dimensions": [{"name": "ga:segment"}, {"name": "ga:browser"}],
"metrics": [{"expression": "ga:sessions"}],
"segments": [
{
"dynamicSegment":
{
"name": "Sessions with Safari browser",
"userSegment":
{
"segmentFilters": [
{
"simpleSegment":
{
"orFiltersForSegment": [
{
"segmentFilterClauses": [
{
"dimensionFilter":
{
"dimensionName": "ga:browser",
"operator": "EXACT",
"expressions": ["Safari"]
}
}]
}]
}
}]
}
}
}]
}]
}
Consulta Muestras para obtener más solicitudes de ejemplo con segmentos.
ID del segmento
Usa el campo segmentId
para solicitar segmentos.
No puedes usar segmentId
y dynamicSegment
para solicitar segmentos.
Por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dimensions": [{"name": "ga:medium"}, {"name": "ga:segment"}],
"metrics": [{"expression": "ga:users"}],
"segments": [{"segmentId": "gaid::-3"}]
}
]
}
Muestreo
El muestreo puede afectar los resultados de los datos y es un motivo común por el que los valores que muestra la API no coinciden con la interfaz web. Usa el campo samplingLevel
para establecer el tamaño de muestra deseado.
- Establece el valor en
SMALL
para una respuesta rápida con un tamaño de muestreo más pequeño. - establece el valor en
LARGE
para obtener una respuesta más precisa, pero más lenta. - Establece el valor en
DEFAULT
para una respuesta que equilibre la velocidad y la precisión.
Por ejemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dimensions": [{"name": "ga:medium"}],
"metrics": [{"expression": "ga:sessions"}],
"samplingLevel": "LARGE"
}
]
}
Si un informe contiene datos de muestra, la API de informes de Analytics v4 muestra los campos samplesReadCounts
y samplingSpaceSizes
.
Si no se toman muestras, estos campos no se definirán.
A continuación, se muestra un ejemplo de respuesta que contiene datos de muestra de una solicitud con dos períodos. Los resultados se calcularon a partir de casi 500,000 muestras de un tamaño de espacio de muestreo de aproximadamente 15 millones de sesiones:
{
"reports":
[
{
"columnHeader": {
...
},
"data": {
...
"samplesReadCounts": [ "499630","499630"],
"samplingSpaceSizes": ["15328013","15328013"],
}
}
]
}
Paginación
La API de informes de Analytics v4 usa los campos pageToken
y pageSize
para paginar los resultados de respuesta que abarcan varias páginas. Obtienes pageToken
del parámetro nextPageToken
en la respuesta a la solicitud reports.batchGet
:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":[
{
...
# Taken from `nextPageToken` of a previous response.
"pageToken": "10000",
"pageSize": "10000",
}]
}
Próximo paso
Ahora que conoces los conceptos básicos para crear un informe, observa las funciones avanzadas de la versión 4 de la API.