Hoje vou começar a falar um pouco sobre os APIs de informações do Google… Durante toda a semana que passou dei uma olhada rápida em todas as APIs deles e posso dizer: tem um mundo inexplorado ali… Pelo menos pros brasileiros. De hoje em diante vou focar aprender todas (eu disse TODAS) as APIs deles e sempre que eu me achar apto, vou passar algo aqui pra vocês.
GAPI hein?
GAPI significa Google Analytics PHP Interface (ou Interface em PHP para Google Analytics) e é um projeto open-source criado por um cara chamado Stig Manning… Esse projeto foi criado para facilitar a sua (e a minha) vida na hora de buscar dados e gerar relatórios com os dados do Google Analytics para serem exibidos em outros sites… Espera um pouco, você não sabia que isso era possivel?! Viva la revolucion!
O GAPI é uma classe que te ajudará a fazer todo o trabalho de login, encontrar profile IDs, filtrar relatórios e tudo mais… Foi desenvolvido para ser usado com Frameworks (Symfony, CakePHP, Zend e etc.)… Mas pode ser usado perfeitamente por qualquer site com PHP 5 ou superior (e é isso que eu vou ensinar a fazer aqui hoje).
Com a API do Google Analytics você pode ter acesso a QUALQUER dado/relatório que teria acessando normalmente sua conta pelo site.
Download e “Instalação”
Para baixar o GAPI é simples.. Como diria meu professor de física do colegial: “é mel na chupeta!”… Acesse a página oficial do projeto dentro do Google Code e (logo ali na lateral direita) faça o download da última versão.
Para poder usar a classe você só precisa ter o hárduo trabalho de incluir o arquivo gapi.class.php no seu site.
Exemplo de uso – Autenticação
Da mesma forma que você precisa fazer o login com a sua conta Google para ter acesso aos perfis de sites, e posteriormente aos relatórios desses perfis, você também precisa fazer o login autenticando seus dados de acesso… Veja como é dificil fazer isso:
<?php
require_once("gapi.class.php");
// Autenticação
$ga = new gapi('SEU E-MAIL', 'SUA SENHA');
?>
–
Exemplo de uso – Listando os perfis de site
Para listar todos os perfis de site que você tem na sua conta você pode fazer assim:
<?php
require_once("gapi.class.php");
// Autenticação
$ga = new gapi('SEU E-MAIL', 'SUA SENHA');
// Pega os dados da conta e perfis de site
$ga->requestAccountData();
// Pra cada resultado encontrado...
foreach ($ga->getResults() as $perfil) {
// Exibe os dados de cada um dos perfis de site
echo $perfil . ' (' . $perfil->getProfileId() . ')<br />';
}
?>
O código acima irá exibir uma pequena lista dos sites que você tem na sua conta do Analytics… Usarei como exemplo o ID 12345 que é um ID fictício.
Exemplo de uso – Pegando dados
Agora você já fez o login e tem o ID do perfil do site que você quer pegar os resultados… Vamos fazer duas consultas de exemplo e pegar os dados necessários para fazer um relatório completo sobre as visitas e pageviews do mês passado:
<?php
require_once("gapi.class.php");
// Autenticação
$ga = new gapi('SEU EMAIL', 'SUA SENHA');
// ID do perfil do site
$id = '12345';
// Define o periodo do relatório
$inicio = date('Y-m-01', strtotime('-1 month')); // 1° dia do mês passado
$fim = date('Y-m-t', strtotime('-1 month')); // Último dia do mês passado
// Busca os pageviews e visitas (total do mês passado)
$ga->requestReportData($id, 'month', array('pageviews', 'visits'), null, null, $inicio, $fim);
foreach ($ga->getResults() as $dados) {
echo 'Mês ' . $dados . ': ' . $dados->getVisits() . ' Visita(s) e ' . $dados->getPageviews() . ' Pageview(s)<br />';
}
echo '<br />';
// Busca os pageviews e visitas de cada dia do último mês
$ga->requestReportData($id, 'day', array('pageviews', 'visits'), 'day', null, $inicio, $fim, 1, 50);
foreach ($ga->getResults() as $dados) {
echo 'Dia ' . $dados . ': ' . $dados->getVisits() . ' Visita(s) e ' . $dados->getPageviews() . ' Pageview(s)<br />';
}
?>
É claro que esse codigo parece um pouco complexo pra quem está começando.. Vou tentar explicar os argumentos do método requestReportData:
1 – Primeiro tempos o ID do perfil do site que você já pegou antes usando o requestAccountData()
2 – Aqui temos a lista de dimensões que estamos buscando. No primeiro exemplo usamos ‘month’ para pegar o total de cada mês do período especificado, e no segundo usamos ‘day’ para pegar o total referente a cada dia do período. Veja aqui a lista completa de dimensões que podem ser usadas.
3 – No terceiro parâmetro temos as métricas, que são os valores que estamos buscando… Nos dois casos usamos ‘pageviews’ e ‘visits’. Veja aqui uma lista completa de métricas que podem ser usadas.
4 – O quarto parâmetro é a ordem dos resultados.
5 – O quinto parâmetro é o filtro. (Raramente usado)
6 e 7 – São os parâmetros que definem o período dos relatórios no formato AAAA-MM-DD.
8 – No oitavo parâmetro você define o n° do primeiro registro (usado para paginação de resultados).
9 – No nono (e último) parâmetro você define o n° do último registro (usado para paginação de resultados).
Os únicos argumentos obrigatórios são os três primeiros.
Sei que é muita coisa… Mas isso te permite um controle total dos relatórios que serão gerados.
–
Espero que tenham gostado… Essa classe é muito útil pra qualquer site e pra qualquer gerenciador de conteúdo que dê valor ao perfil do visitante. Seus clientes (e os visitantes deles) vão adorar ver um gráfico das últimas visitas do site, ou uma lista de em quais países o site tem mais impacto… O uso é infinito.
Abraços e até a próxima!
Você também vai gostar de ler:
- Rastreando visitas do Twitter com o Google Analytics
- Inserindo o Google Analytics no seu site
- Buscando a Latitude e Longitude de um endereço – Google Maps + PHP – Parte 1
- Manipulando dados do MySQL com o PHP
- Resultados de busca do Google no seu site
Postado em Artigos, PHP, Tutoriais
Com as tags API, Brasil, Busca, CakePHP, Classe, Código, Consultas, Download, E-mail, File, Framework, Frameworks, GAPI, GD, Google, Google Analytics, HTML, Instalação, Login, Paginação, Parâmetros, PHP, PHP 5, Projeto, Relatórios, Reports, Resultados, Scripts, Senha, source, Visitas
Escrito por Thiago Belem
Gostou desse artigo?
Não se esqueça de assinar o RSS e divulgue-o para o mundo:

Olá Thiago,
Gostei bastante do artigo, muito interessante. Agora eu gostaria de saber se os dados optidos pelo Gapi ficam restritos apenas aos Pageview, Browser…haveria a possibilidade de capturar os dados disponibilizados pelo Google Analytics como fontes de trafego, Cobertua Regional, Palavras-chave e etc..
@Joabe
Sim, é possível pegar todos os dados que aparecem no Analytics… Veja mais aqui.
Opa Thiago, você saberia alguma forma de quando ele não conseguir acessar o google não tirar a pagina do ar?
Porque eu tenho o contador no meu site, funcionando e tudo mais, mas de vez em quando parece que o acesso ao google falha, e dai tira o site do ar…
Obrigado antecipadamente
@Andrew
O ideal seria você usar alguma forma de cache, onde esses dados ficam armazenados localmente e caso você não consiga se conectar ao GA você usa os que tem no servidor do site, poderia usar um banco MySQL pra isso.
Show…..agora, poderei disponibilizar um monitoramento mais real para meus clientes que insistem em querer “contador de visitas no site”….claro..parabéns!!
Fera, para mim está retornando erro, podes me ajudar?
Fatal error: Uncaught exception ‘Exception’ with message ‘GAPI: Failed to authenticate user. Error: “Request failed, fopen provides no further information”‘ in …
@Ezequiel
O GAPI não conseguiu autenticar sua conta Google cadastrada no Analytics.
Obrigado, mas tem isso aqui:
$ga->requestReportData($id, ‘year’, array(‘pageviews’, ‘visits’), ‘-year’, null, date(‘Y-m-d’, strtotime(‘-2 year’)), date(‘Y-m-d’),1,1);
foreach ($ga->getResults() as $dados) {
echo ‘Dia ‘ . $dados . ‘: ‘ . $dados->getVisits() . ‘ Visita(s) e ‘ . $dados->getPageviews() . ‘ Pageview(s)’;
}
Eu estava fazendo dessa forma, mas só pega do ultimo ano, tem alguma melhor para me recomendar por favor?
Obrigado
Ola, gostei muito da dica e estou utilizando no meu site, mas surgiram algumas duvidas que não pude sanar lendo a documentação, se você puder me ajudar agradeço:
ali tem month, day, year, mas para o total é como?
@Andrew
Nem na página do Analytics você tem a opção de pegar o “total” de visitas… O que você pode fazer é definir a data de inicio como uma data muito antiga e a data final como hoje e depois encontrar os totais.
ola thiago, será que vc pode me dar uma luz?
esse é meu site:
goaguu.com.br/blog
eu coloco uma lista dos sites parceiros da nuvem de blogs, e coloco em cima da nuvem os blogs que trazem mais visits para a nuvem, eu faço isso manualmente entrando no analitycs e vendo quem da mais visitas, eu conseguiria fazer isso de forma automárica usando essa parada que vc enscinou sobre o analitycs?
@Cristiano
Sim… é possivel.
Como faço para gerar os gráficos como os do Analytics agora amigo?
@Max
Falarei sobre isso assim que possível…
Aqui funcionou legal, versão do PHP 5.2.9.
Vou dar uma lida nas APIs do google, são bem interessantes.
Testei o codigo que mostra as visitas diarias e não mostra nada, não atualiza, sempre fica 0 visitas, 0 pageviews.
@Danilo
Verifique se você está fazendo de forma correta… Outras pessoas já conseguiram.
Aqui deu erro…
Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /home/xxxxxxx/public_html/stats/gapi.class.php on line 29
Procurei por muito tempo por algo desse gênero. Se conseguir colocar pra funfar blz…
Vlw!
@Leonel
Provavelmente a sua versão do PHP é antiga.. Tem pelo menos a 5.2?
Daria para fazer algo parecido com cURL?
@Renato
Sim… Daria… Mas você prefere beber água e pular no fogo até ela evaporar para ter oxigênio pra vc não morrer, ou prefere simplesmente respirar?