Este é um guia do desenvolvedor da Reporting API v4 do Google Analytics. Para ver uma referência detalhada da API, consulte a Referência da API.
Relatórios
A API de relatórios v4 do Google Analytics oferece o método batchGet para acessar o recurso Reports.
As seções a seguir descrevem a estrutura do corpo da solicitação de batchGet
e a estrutura do corpo da resposta de batchGet
.
Corpo da solicitação
Para usar a Reporting API v4 do Google Analytics para solicitar dados, é necessário criar um objeto ReportRequest, que contém estes requisitos mínimos:
- um ID da vista válido para o campo viewId;
- pelo menos uma entrada válida no campo dateRanges;
- pelo menos uma entrada válida no campo metrics.
Para encontrar o código da vista, consulte o método account summaries ou use o Explorador da conta.
Se um período não for fornecido, o período padrão será:
{"startDate": "7daysAgo", "endDate": "yesterday"}
.
Veja a seguir uma solicitação de amostra com o mínimo de campos obrigatórios:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dateRanges": [{"startDate": "2014-11-01", "endDate": "2014-11-30"}],
"metrics": [{"expression": "ga:users"}]
}
]
}
O método batchGet
aceita no máximo cinco objetos ReportRequest. Todas as solicitações precisam ter dateRange
, viewId
, segments
, samplingLevel
e cohortGroup
.
Corpo da resposta
O corpo da resposta da solicitação da API é um conjunto de objetos Report. A estrutura de relatórios é definida no objeto ColumnHeader, que descreve as dimensões e métricas e seus respectivos tipos de dados no relatório. Os valores das dimensões e métricas são especificados no campo data.
Veja um exemplo de resposta da solicitação de amostra acima:
{
"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
Métricas são medidas quantitativas. Todas as solicitações requerem pelo menos um objeto Metric.
No exemplo a seguir, a métrica Sessions
é fornecida ao método batchGet
para mostrar o número total de sessões no 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"}]
}
]
}
Você pode usar o Explorador de dimensões e métricas ou a API Metadata para ver a lista de dimensões e métricas disponíveis.
Filtragem
Ao enviar uma solicitação batchGet
, você pode pedir a ela que retorne apenas métricas que atendam a critérios específicos. Para filtrar métricas, especifique um ou mais MetricFilterClauses no corpo da solicitação e, em cada MetricFilterClause
, defina um ou mais MetricFilters.
Em cada MetricFilter
, especifique os valores de:
metricName
not
operator
comparisonValue
Permita que {metricName}
represente a métrica, {operator}
represente o operator
e {comparisonValue}
represente o comparisonValue
. Então, o filtro funcionará assim:
if {metricName} {operator} {comparisonValue}
return the metric
Se você especificar true
para not
, o filtro funcionará assim:
if {metricName} {operator} {comparisonValue}
do not return the metric
No exemplo a seguir, batchGet
retorna somente exibições de páginas cujo valor é maior 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"
}]
}]
}]
}
Expressões
Uma expressão métrica é uma expressão matemática que você define nas métricas existentes. Ela opera como métricas calculadas dinâmicas. Você pode definir um alias para representar a expressão métrica, por exemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"metrics":
[
{
"expression": "ga:goal1completions/ga:users",
"alias": "completions per user"
}
]
}
]
}
Pedidos
Para classificar os resultados pelo valor de uma métrica:
- insira o nome ou o alias dela no campo
fieldName
; - especifique a ordem de classificação (
ASCENDING
ouDESCENDING
) no camposortOrder
.
No exemplo a seguir, batchGet
retorna as métricas classificadas primeiro por sessões e depois por visualizações de páginas em ordem decrescente:
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"}
]
}
]
}
Dimensões
As dimensões descrevem as características dos seus usuários e das sessões e ações correspondentes.
A dimensão "Cidade", por exemplo, descreve uma característica de sessões e indica a cidade ("Paris" ou "Nova York") de origem de cada sessão.
Em uma solicitação batchGet
, você pode especificar zero ou mais objetos dimension. Por exemplo:
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"}
]
}
]
}
Filtragem
Ao enviar uma solicitação batchGet
, você pode pedir a ela que retorne apenas dimensões que atendam a critérios específicos. Para filtrar dimensões, especifique um ou mais DimensionsFilterClauses no corpo da solicitação e defina um ou mais DimensionsFilters em cada DimensionsFilterClause
.
Em cada DimensionsFilters
, especifique os valores de:
dimensionName
not
operator
expressions
caseSensitive
Permita que {dimensionName}
represente a dimensão, {operator}
represente o operator
e {expressions}
represente as expressions
. Então, o filtro funcionará assim:
if {dimensionName} {operator} {expressions}
return the dimension
Se você especificar true
para not
, o filtro funcionará assim:
if {dimensionName} {operator} {expressions}
do not return the dimension
No exemplo a seguir, batchGet
retorna exibições de páginas e sessões em um 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"]
}
]
}
]
}
]
}
Pedidos
Para classificar os resultados pelo valor de uma dimensão:
- informe o nome dela no campo
fieldName
; - especifique a ordem de classificação (
ASCENDING
ouDESCENDING
) no camposortOrder
.
Por exemplo, o batchGet
a seguir retorna as dimensões
classificadas por país e depois 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"}
]
}
]
}
Grupos de histogramas
Para dimensões com valores inteiros, é mais fácil entender as características delas agrupando os respectivos valores em intervalos. Use o campo histogramBuckets
para definir os intervalos dos grupos resultantes e especifique HISTOGRAM_BUCKET
como o tipo de pedido. Por exemplo:
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"
}
]
}
]
}
Vários períodos
Com a Reporting API v4 do Google Analytics, é possível ver dados de vários períodos em uma única solicitação. Independentemente de a solicitação especificar um ou dois períodos, os dados são retornados no objeto dateRangeValue. Por exemplo:
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"}]
}
]
}
Pedidos de Delta
Ao solicitar valores de métricas em dois períodos, você pode ordenar os resultados pela diferença entre os valores da métrica nos períodos, por exemplo:
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"
}
]
}
]
}
Comportamento da dimensão de data
Se você solicitar uma dimensão relacionada a data ou hora, o objeto DateRangeValue conterá somente valores das datas que estiverem dentro dos respectivos intervalos. Todos os demais valores que não estiverem nos períodos especificados serão 0
.
Por exemplo, considere uma solicitação para a dimensão ga:date
e a métrica ga:sessions
em dois períodos: janeiro e fevereiro.
Na resposta para os dados solicitados em janeiro, os valores em fevereiro serão 0
. Já na resposta para os dados solicitados em fevereiro, os valores em janeiro serão 0
.
Relatório de janeiro
{
"dimensions": [
"20140101" # `ga:date` dimension value for January 1, 2014.
],
"metrics": [
{
"values": [ # January DateRangeValue.
"8"
]
},
{
"values": [ # February DateRangeValue.
"0"
]
}
]
},
...
Relatório de fevereiro
{
"dimensions": [
"20140201" # `ga:date` dimension value for February 1, 2014.
],
"metrics": [
{
"values": [ # January DateRangeValue.
"0"
]
},
{
"values": [ # February DateRangeValue.
"7"
]
}
]
},
...
Segmentos
Para solicitar um subconjunto dos seus dados do Google Analytics, use segmentos. Por exemplo, você pode definir os usuários de um determinado país ou cidade em um segmento e os usuários que acessarem uma parte específica do seu site em outro. Os filtros retornam somente linhas que satisfazem uma condição. Já os segmentos retornam subconjuntos de usuários, sessões ou eventos que atendem às condições que contêm os segmentos.
Ao fazer uma solicitação com segmentos:
- todas as ReportRequest em um método
batchGet
precisam conter definições de segmento idênticas; - é necessário adicionar
ga:segment
à lista de dimensões.
Por exemplo:
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"]
}
}]
}]
}
}]
}
}
}]
}]
}
Consulte Amostras para ver mais exemplos de solicitações com segmentos.
ID do segmento
Use o campo segmentId
para solicitar segmentos.
Não é possível usar um segmentId
e um dynamicSegment
para solicitar segmentos.
Por exemplo:
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"}]
}
]
}
Amostragem
A amostragem pode afetar os resultados dos seus dados e é um motivo comum pelo qual os valores retornados da API não correspondem à interface da Web. Use o campo samplingLevel
para definir o tamanho desejado da amostra.
- Defina o valor como
SMALL
para receber uma resposta rápida com tamanho de amostragem menor. - Defina o valor como
LARGE
para receber uma resposta mais precisa, porém mais lenta. - Defina o valor como
DEFAULT
para receber uma resposta que equilibre velocidade e precisão.
Por exemplo:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":
[
{
"viewId": "XXXX",
"dimensions": [{"name": "ga:medium"}],
"metrics": [{"expression": "ga:sessions"}],
"samplingLevel": "LARGE"
}
]
}
Se um relatório contiver dados de amostra, a API de relatórios v4 do Google Analytics retornará os campos samplesReadCounts
e samplingSpaceSizes
.
Se os resultados não forem de amostra, esses campos não serão definidos.
Veja a seguir um exemplo de resposta que contém dados de amostra de uma solicitação com dois períodos. Os resultados foram calculados a partir de quase 500 mil amostras do tamanho de um espaço de amostragem de aproximadamente 15 milhões de sessões:
{
"reports":
[
{
"columnHeader": {
...
},
"data": {
...
"samplesReadCounts": [ "499630","499630"],
"samplingSpaceSizes": ["15328013","15328013"],
}
}
]
}
Paginação
A API de relatórios v4 do Google Analytics utiliza os campos pageToken
e pageSize
para executar a paginação dos resultados em várias páginas. Você verá pageToken
a partir do parâmetro nextPageToken
na resposta à solicitação reports.batchGet
:
POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
"reportRequests":[
{
...
# Taken from `nextPageToken` of a previous response.
"pageToken": "10000",
"pageSize": "10000",
}]
}
Próxima etapa
Agora que você já conhece os princípios básicos da criação de um relatório, confira os recursos avançados da API v4.