Ultimamente tive que colocar o bom e velho contador de visitas no site de um cliente que fosse restrito ao administrador. Sendo assim, pensei em fazer uma aplicaçãozinha para contar o carregamento de cada página resultando na quantidade de pageviews (visualizações de páginas). Como o cliente gostaria de ter este número na sua interface do admin do site, este método seria simples e rápido, mas talvez não tão eficaz.
Não conformado com a minha idéia, fui então ao Google encontrar uma solução mais viável e interessante. Foi aí que descobrir o GAPI – Google Analytics PHP Interface. O GAPI é um projeto opensource que se conecta com sua conta do Google Analytcs e apresenta os dados que você solicitar com poucas linhas de código. Isso mesmo, rápido, simples e fantástico.
Como instalar?
Primeiramente você deve baixar o GAPI na página oficial do projeto. Após isso, descompacte-o e localize um arquivo PHP chamado gapi.class.php. É ai que a banda vai tocar hehehe! Vamos lá.
Incluindo a classe gapi:
Inclua o gapi.class.php na sua aplicação através do require_once. Seu código deve ficar assim:
<?php
//Inclui a classe gapi
require_once('gapi.class.php');
?>
Autenticando:
Para acessar o Google Analytics, você precisa informar os dados de login e senha, certo? Então informe para o GAPI também.
<?php
//Inclui a classe gapi
require_once('gapi.class.php');
//Autenticação com seu login e senha
$gapi = new gapi('Seu e-mail', 'Sua senha');
?>
Listando perfis:
Vamos descobrir quais perfis de sites estão cadastrados nesta conta do Google Analytics, pois precisaremos da identificação (ID) para capturar os dados desejados. Para isso, utilizaremos o método requestAccountData().
<?php
//Inclui a classe gapi
require_once('gapi.class.php');
//Autenticação com seu login e senha
$gapi = new gapi('Seu e-mail', 'Sua senha');
//Pega os dados da conta e perfis dos sites existentes
$gapi->requestAccountData();
//Imprime os resultados encontrados
foreach ($gapi->getResults() as $perfil) {
echo $perfil . ' => ' . $perfil->getProfileId() . '<br />';
}
?>
Gerando relatórios
Para gerar relatórios de qualquer informação, você precisa utilizar o método requestReportData() que possui 9 parâmetros. Vou explicar cada um deles para ficar fácil o entendimento na hora do uso.
$report_id
Tipo: string
Descrição: é o ID do perfil que falei agora a pouco lá em cima.
Exemplo: ‘12345678’ (Vamos usar este ID fictício nos testes seguintes).
$dimensions
Tipo: array
Descrição: é a frequência dos dados que deseja obter.
Exemplo: array(‘browser’), array(‘month’), array(‘day’), array(‘week’), etc. Veja aqui a lista completa das dimensões que podem ser usadas.
$metrics
Tipo: array
Descrição: são as métricas que o Analytics faz sobre as visitas.
Exemplo: array(‘pageviews’), array(‘visits’), etc. Veja aqui a lista completa das métricas que podem ser usadas.
$sort_metric (opcional)
Tipo: array
Descrição: classificação de ordem para $dimensios e $metrics.
O padrão é ascendente. Utilize o símbolo ‘-‘ para decrescente.
Exemplo: array(‘-visits’).
$filter (opcional)
Tipo: string
Descrição: é o filtro da pesquisa.
Exemplo: country == ‘Brazil’ && ( browser == ‘Firefox’ || browser == ‘Chrome’). Veja aqui mais detalhes de como usar o controle de filtros.
$start_date (opcional)
Tipo: string
Descrição: início do período da pesquisa (YYYY-MM-DD).
Exemplo: ‘20012-11-28’
$end_date (opcional)
Tipo: string
Descrição: fim do período da pesquisa (YYYY-MM-DD).
Exemplo: ‘2012-12-28’
$start_index (opcional)
Tipo: int
Descrição: início do índice de resultados.
Exemplo: 1
$max_results (opcional)
Tipo: int
Descrição: máximo de resultados retornados. O máximo é 1000 resultados.
Exemplo: 50
Pronto, agora você já sabe o ID do seu perfil e já está utilizando o GAPI conectado ao Google Analytics. Vamos ver alguns exemplos de uso real que facilitará a vida do seu cliente, pois a nossa já está fácil com o GAPI :).
Pegando o total de visitas e pageviews da data atual:
<?php
//Inclui a classe gapi
require_once('gapi.class.php');
//Autenticação com seu login e senha
$gapi = new gapi('Seu e-mail', 'Sua senha');
//ID do perfil do site
$id = '12345678';
//Busca os pageviews e visitas do dia
$inicio = date('Y-m-d');
$fim = date('Y-m-d');
$gapi->requestReportData($id, 'day', array('pageviews', 'visits'), null, null, $inicio, $fim, null, null);
foreach ($gapi->getResults() as $dados) {
echo 'Total de visitas hoje é: ' . $dados->getVisits();
echo '<br>';
echo 'Total de pageviews hoje é: ' . $dados->getPageviews();
}
?>
Pegando o total de visitas e pageviews do mês atual:
<?php
//Inclui a classe gapi
require_once('gapi.class.php');
//Autenticação com seu login e senha
$gapi = new gapi('Seu e-mail', 'Sua senha');
//ID do perfil do site
$id = '12345678';
//Busca os pageviews e visitas do mês atual
$inicio = date('Y-m-01'); //Atribui o 1º dia do mês atual
$fim = date('Y-m-t'); //Atribui o último dia do mês atual
$gapi->requestReportData($id, 'month', array('pageviews', 'visits'), null, null, $inicio, $fim, null, null);
foreach ($gapi->getResults() as $dados) {
echo 'Total de visitas do mês atual é: ' . $dados->getVisits();
echo '<br>';
echo 'Total de pageviews do mês atual é: ' . $dados->getPageviews();
}
?>
Pegando o total de visitas e pageviews do mês passado:
<?php
//Inclui a classe gapi
require_once('gapi.class.php');
//Autenticação com seu login e senha
$gapi = new gapi('Seu e-mail', 'Sua senha');
//ID do perfil do site
$id = '12345678';
//Busca os pageviews e visitas do mês passado
$inicio = date('Y-m-01', strtotime('-1 month')); //Atribui o 1º dia do mês passado
$fim = date('Y-m-t', strtotime('-1 month')); //Atribui o último dia do mês passado
$gapi->requestReportData($id, 'month', array('pageviews', 'visits'), null, null, $inicio, $fim, null, null);
foreach ($gapi->getResults() as $dados) {
echo 'Total de visitas do mês passado é: ' . $dados->getVisits();
echo '<br>';
echo 'Total de pageviews do mês passado é: ' . $dados->getPageviews();
}
?>
Então é isso, essa classe é muito útil e as possibilidades são infinitas, basta você ter conhecimento da classe GAPI e criatividade para conjugar os relatórios. Se ainda quiser complicar a coisa, coloque os resultados em um gráfico usando jQuery. Tenho certeza que seu cliente ficará muito satisfeito.
A classe GAPI se tornou padrão em meus projetos com sites administráveis :).
Espero que tenham gostado e até a próxima.