Pegando dados do Google Analytics com PHP através da classe GAPI

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.