quarta-feira, 9 de novembro de 2011

Pegando dados do Google Analytics via PHP


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.


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.

Um comentário :

  1. require_once ()
    A instrução require_once () é idêntica à require (), exceto PHP irá verificar se o arquivo já foi incluído, e se assim for não, include (require) novamente.
    Veja o include_once () documentação para obter informações sobre o comportamento _once, e como ele difere de seus irmãos _once não.

    php.net/manual/en/function.require-once.php

    ResponderExcluir

Total de visualizações de página