Campo de busca

Categoria Programação

Utilizando a API do Google Analytics com ASP.NET MVC e C#

Utilizando a API do Google Analytics com ASP.NET MVC e C#

Por | 12 de março, 2013 | 42 comentários

Atenção: devido a uma atualização da API do GA o código abaixo não está funcionando mais. Em breve vou atualizar o post com um novo código :)

Fala galera, tudo certo?

Depois da boa receptividade do meu último post “Google Maps API v3: Busca de endereço e Autocomplete“, resolvi dar continuidade à posts que tratam sobre as APIs do Google. Dessa vez, irei mostrar pra vocês como utilizar a API do Google Analytics utilizando um projeto em ASP.NET MVC e C#.

O Google Analytics é uma ferramenta gratuita de análise de métricas de sites. Caso você utilize o Google Analytics em seu site, você poderá ver diversas estatísticas, como visitas, páginas com mais acessos, tecnologias utilizadas, etc. Esses dados são de extrema valia para que os clientes ou os profissionais de marketing digital, possam analisá-los e tomar ações de modo a aumentar o ROI de seus sites.

Aprendendo a utlizar a API do Google Maps, você pode exibir as estatísticas do site para o seu cliente de forma mais direta e didática. Além disso, se você tiver uma equipe de SEO na sua empresa, você pode automatizar os relatórios de SEO, que são feitos de forma manual, repetitiva e tediosa.

Vamos começar?

Obtendo a API Access

Para que possamos aumentar o nosso limite e quota da API do Google Analytics, é necessário que obtenhamos uma chave da API exclusiva para o nosso projeto.

Para obter a chave, entre no Console de APIs com a sua conta do Google (a mesma que você usa para acessar o Analytics). No menu, vá em Services e habilite o Analytics API, clicando em OFF.

Após isso, vá em API Access. No nosso caso, iremos utilizar a opção Simple API Access, pois utilizaremos a versão 2.4 da API do Google Analytics. Nessa página, guarde o valor da API key, pois utilizaremos essa informação mais adiante.

Escolhendo a biblioteca

Para utilizarmos as APIs do Google na plataforma .NET, temos duas opções: A biblioteca google-gdata e a biblioteca google-api-dotnet-client.

As diferenças dessas duas bibliotecas, é que o google-api-dotnet-client é beta e é recomendada pelo Google caso você queira usar a versão 3.0 da API. Já a biblioteca google-gdata, é recomendada pelo Google caso você queira usar a versão 2.4 da API. Nesse tutorial nós utilizaremos a biblioteca google-gdata.

No Visual Studio, utilize o NuGet para baixar o pacote Google.GData.Analytics.

Que comece a diversão

Com o pacote Google.GData.Analytics referenciado ao seu projeto, vamos escrever algumas linhas de código que irão autenticar o nosso projeto na API do Google Analytics.

Para autenticar, basta criar um objeto do tipo AnalyticsService, e informar o nome da sua aplicação, seu usuário (e-mail do Gmail) e a sua senha.

O nome da aplicação você irá pegar no Console de APIs. Ele fica no canto esquerdo da tela, acima de Overview. Clicando em cima do nome, você pode renomeá-lo se preferir.

Google apis

O nosso código de autenticação ficará assim:

string usuario = "email@gmail.com";
string senha = "suasenha";
 
var service = new AnalyticsService("API Project");
 
service.setUserCredentials(usuario, senha);

Dai-me os dados, Google

A obtenção de dados do Google Analytics é bem tranquila. Antes de eu dar um exemplo para obter o número de visitas de um determinado período de tempo, é bom que você tenha a referência das métricas e dimensões disponíveis na API.

Com as dimensões e métricas em mãos, você saberá  como obter qualquer dado disponível na API. Você pode usar a Referência de Dimensões e Métricas para Analytics, e para testar na prática essas dimensões e métricas, você pode usar o Google Analytics Query Explorer 2. Recomendo fortemente que você estude a referência utilizando a Query Explorer 2, pois a união dos dois torna o aprendizado muito mais prático e dinâmico.

Vamos então pegar todas as visitas e page views do nosso site, de um determinado período. Para isso, nós:

  1. Instanciamos um objeto DataQuery, que contém o endereço do Feed da API do Google Analytics com o parâmetro key, que você deve colocar a sua API Key.
  2. Definimos o atributo “ids”. Para obter o valor desse atributo, entre no Query Explorer 2 logado com a sua conta do Google (a mesma que você usa para acessar o Analytics), clique em “Authorize Access”, e o valor do atributo ids irá aparecer no formulário;
  3. Definimos as dimensões e métricas (separados por vírgula);
  4. Definimos o período: Data de início e término;
  5. Por fim, a ordenação dos dados.
string apiKey = "";
string feedURL = "https://www.googleapis.com/analytics/v2.4/data?key=" + apiKey;
 
var query = new DataQuery(feedURL);
 
query.Ids = "";
query.Dimensions = "ga:date";
query.Metrics = "ga:visits,ga:pageviews";
 
query.GAStartDate = DateTime.Now.AddDays(-16).ToString("yyyy-MM-dd");
query.GAEndDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
 
query.Sort = "ga:date";
query.StartIndex = 1;
 
var dataFeedVisitas = service.Query(query);

Agora que nós temos todos os dados, vamos exibí-los:

var builder = new StringBuilder();
 
foreach (DataEntry dado in dataFeedVisitas.Entries)
{
    var visitas = dado.Metrics[0].Value;
    var pageViews = dado.Metrics[1].Value;
    var data = dado.Dimensions[0].Value;
 
    builder.Append("Data: " + data);
    builder.Append("Visitas: " + visitas);
    builder.Append("Page views: " + pageViews);
}
 
Response.Write(builder.ToString());

Maravilha! Agora temos os dados que queríamos. Observe que para pegarmos os dados das métricas, usamos o Metrics, e para pegarmos as dimensões, usamos o Dimensions.

O código que coloquei aqui nesse post irá funcionar tanto em Web Forms quanto em MVC. Deixo no meu GitHub um projeto em ASP.NET MVC e C# com o código mais bem organizado, caso vocês queriam baixar para referência ou melhorá-lo.

Como de praxe, qualquer dúvida, sugestão, crítica ou doação de cerveja, deixe um comentário :)

Se gostou do post, ajude-me divulgando-o para seus amigos.

Até a próxima!

 

Deixe um comentário

Queremos saber o que você pensa sobre esse post! Ficaremos felizes se você nos deixar um comentário :-)

Tenha em mente que os comentários são moderados, e os links possuem rel="nofollow". Então por favor, não faça spam de palavras-chave, senão o seu comentário será excluído. Obrigado!

 

[42] Comentários  

ricardo

como obter o total de visitas e demais dados de um video do youtube ?

23-08-2013 às 19:17 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a ricardo

Olá Ricardo,

Recomendo você dar uma olhada na API do YouTube: https://developers.google.com/youtube/v3/

Abs!

30-08-2013 às 19:48 Responder

Felipe

Fiz exatamente os passos acima e está me retornando "Invalid credentials". O que fazer?

23-09-2013 às 17:46 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Felipe

Fala Felipe,

Logado na conta a qual você está tentando puxar os dados do GA:

  1. Entre em https://www.google.com/settings/account e veja há alguma mensagem diferente, algo como "Alguém tentou acessar a sua conta", e libere o acesso;
  2. Caso não haja a mensagem acima ou o passo 1 não solucionou o problema, entre em https://accounts.google.com/b/0/DisplayUnlockCaptcha e faça os procedimentos que estiverem descritos na página.

Se mesmo assim o problema persistir, veja se você colocou todos os dados certos na configuração do script.

Abs!

23-09-2013 às 17:55 Responder

Felipe

Em resposta a Rodolfo Pereira

Deu certo, Rodolfo.

Obrigado pela atenção. Uma última pergunta: você que está mais por dentro disso, existe um "prazo" pra migrarmos a autenticação pra OAuth 2?

23-09-2013 às 18:10 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Felipe

Hm, nunca li nada sobre isso. Se ficar sabendo de algo, nos avise :-)

25-09-2013 às 13:23 Responder

João Paulo

Olá Rodolfo, tentei utilizar seu projeto de exemplo informando com email, senha, id e apikey e está retornando essa exception
"The remote server returned an error: (400) Bad Request"
Sabe dizer se teve alguma mudança em relação a esta url?

Poderia me dar um Help?
Parabéns pelo artigo!

17-12-2013 às 20:23 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a João Paulo

Fala João,

A URL é essa mesma. Dê uma olhada aqui e veja se ajuda em algo: https://developers.google.com/analytics/devguides/reporting/core/v2/gdataReferenceDataFeed#errorCodes

06-01-2014 às 16:45 Responder

Daniel Malkafly

Ajudou muito!
Valew brother

24-02-2014 às 13:32 Responder

Eduardo

Em resposta a Daniel Malkafly

Segui exatamente o seu código, só tive que mudar o feed URL, pois o informado não existe mais. O correto agora é:
https://www.googleapis.com/analytics/v3/data/ga
porém ele dá erro de Parsing Failed na linha do dataFeedVisitas = service.Query(query)

28-02-2014 às 16:16 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Eduardo

É, ao entrar pelo navegador na URL do "feedURL" a mesma não existe, mas mesmo assim a URL funcionou aqui para pegar os dados através da programação... estranho. Valeu pelo toque!

05-03-2014 às 10:48 Responder

selique judeudemolidor

Em resposta a Rodolfo Pereira

ala o malkaminho !!! API YOYOYOYo

29-04-2014 às 15:14 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a selique judeudemolidor

Mais louco que o Batman ein hauhuahua

23-05-2014 às 18:14 Responder

Phillipe

Bom dia Rodolf, estou aplicando esse procedimento em um dos sites que estou desenvolvendo mas esta dando esse erro : Execution of request failed: https://www.googleapis.com/analytics/v2.4/data?key=AIzaSyAFnEJ8ptq6nKUfmuETYoOzArVj8GVIQkg&start-index=1&dimensions=ga:date&end-date=2014-03-26&ids=49062530&metrics=ga:visits%2Cga:pageviews&sort=ga:date&start-date=2014-03-19 o erro aparece na querym o que eu faço?

27-03-2014 às 11:09 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Phillipe

Certeza que a key e ids estão corretos?

09-04-2014 às 20:43 Responder

bruno

Show! gostei do post e também do blog!
Favoritei aqui!

15-04-2014 às 14:20 Responder

Bruno Andrade

Artigo maravilhoso! Mas não tem como atualizar o artigo? Existem várias situações que estão diferentes atualmente, dificultando a execução e finalização sem erros. No meu caso, estou tendo dificuldades em definir a Key correta, já tentei várias keys. Por isso é constante o erro na hora de executar a query, pois diz que o link está errado.

01-05-2014 às 01:04 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Bruno Andrade

Eita, atualmente eu uso esse código e continua funcionando.

Você pode me passar o seu código inteiro?

23-05-2014 às 18:12 Responder

Bruno Andrade

Em resposta a Rodolfo Pereira

Passo sim! Para ficar mais fácil, segue abaixo o link com o print.

http://imagizer.imageshack.us/a/img841/1273/y8gc.png
Não tenho certeza, mas acho que a Key está errada, tentei várias, mas nenhuma está dando certo. Talvez seja outro motivo, não sei.

Espero que possa me ajudar. Obrigado!

24-05-2014 às 01:56 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Bruno Andrade

Hm, por que você está usando a v3 na URL de Feed? O que eu uso é a URL do v2.4, assim como está no post.

10-07-2014 às 16:18 Responder

Bruno Andrade

Em resposta a Rodolfo Pereira

Fiz o teste com o arquivo idêntico ao seu....
Segue abaixo o link com o print

http://imagizer.imageshack.us/v2/1q90/540/73d0f6.png
O erro ainda persiste.

Espero que possa me ajudar. Obrigado!

23-07-2014 às 17:30 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Bruno Andrade

Vixe mano, tenso ein huahauha!

Fiz um teste aqui, e consegui reproduzir a mensagem de erro igual a sua colocando o "_ids" errado ou colocando a key do "_feedURL" errada. Então acho que em um desses dois está o seu problema.

30-07-2014 às 16:22 Responder

Paulo

Fiz o teste e funcionou!!

Att,

05-08-2014 às 16:31 Responder

Eder


Ola Rodolfo, baixei seu projeto porem exibe a mensagem de erro de credenciais, estou usando o mesmo login e senha do analytics. Faz ideia do que possa ser?

Outra dúvida tentei fazer a implementação embed API
https://ga-dev-tools.appspot.com/embed-api/custom-components/
deu tudo certo porem fica pedindo login e senha do google toda vez que acessa, gostaria de exibir os dados para os usuários mas sem que tivesse que colocar login e senha.

obrigado cara,
abs

06-01-2015 às 12:58 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Eder

Fala Eder,

Dê uma lida nos comentários deste post... algumas pessoas tiveram o mesmo problema que o seu. Talvez algum comentário possa te ajudar.

Se mesmo assim não der certo, me avise.

Sobre o Embed API, não sei te dizer =/

Abs!

07-01-2015 às 11:35 Responder

eder

Em resposta a Rodolfo Pereira

Cara incrível mas uso o mesmo login e acesso a conta do Google e no api nao funciona, decidi tentar com outra conta e funcionou.

07-01-2015 às 14:31 Responder

Cássio

Opa, Rodolfo.

Antes de fazer uma pergunta gostaria de parabenizar o blog da empresa de vocês e a clareza na elaboração dos artigos.
Bom, o que eu gostaria de perguntar é se você conhece alguma maneira de retornar (exportado em imagem) o mapa de acessos das páginas cadastradas no Analytcs. Preciso restaurar isto e não encontrei material que ajude.

Abraço

26-02-2015 às 13:28 Responder

Alisson

Primeiramente Parabéns excelente post.

Baixei seu projeto configurei as credentials e funcionou perfeitamente, porém, fui implementar a solução em um projeto MVC 5 e não existe essas referencias do google analytcs nesta mesma versão para o projeto novo, só existe umas referencias mais novas, na qual o seu código não funciona. acontece alguns erros, que não consegui achar solução. Você tem algum exemplo utilizando MVC5?
Ou algum exemplo utilizando as versões novas da api do analytics?

Muito obrigado

18-03-2015 às 16:41 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Alisson

Fala Alisson!

Putz cara, não tenho esse código implementado em MVC5 e nem usando a nova versão da API do Analytics, malz =/

Abs!

06-04-2015 às 14:59 Responder

Lucas

Olá Rodolfo, estou com dificuldades em conseguir a "apiKey". Onde eu encontro essa informação?

22-04-2015 às 16:55 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Lucas

Fala Lucas, beleza?

Até onde você conseguiu ir para pegar a API key? Como já faz um tempinho que escrevi esse post, não sei se eles mudaram os passos para obtê-la.

Abs!

29-04-2015 às 09:50 Responder

Rodrigo

Oi Rodolfo... Sei que tem um tempo que você criou, mas ve se pode me ajudar...

Baixei o seu projeto e criei todas as informações conforme precisava, so que ao tentar usar esta apresentando um erro: "O servidor remoto retornou um erro: (403) Proibido."

Modifiquei a chave, ids e continuou apresentando o erro.

Sabe o que poderia ser esse erro?

07-05-2015 às 10:06 Responder

Leonardo Dutra

Rodolfo ótimo artigo, queria ver se pode me ajudar, agora em maio tentei emitir um relatório que uso integração em asp e C#, e ele ta dando o erro "{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}}" uso a versão 2.4, mas não sei se el t absucando na v3, ou se tem que ter agora oauth, queria ver se pode sanar essa dúvida, abraço.

11-06-2015 às 12:06 Responder

Avner

Boa tarde Rodolfo !
a api nao esta funcionando aqui mais com o gdata, você sabe se tem alguma disponivel sem ser com oauth2 ? ou para você ainda funciona ?

24-06-2015 às 17:07 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Avner

Fala Avner,

Realmente este código parou de funcionar :(

Tenho um outro mais atual que utilizamos, em breve eu atualizo o post e te aviso.

Valeu!

02-07-2015 às 19:09 Responder

Felipe Nunes

Bom dia, Rodolfo.
Você tem algum exemplo desta implementação, mas com OAuth 2?

01-07-2015 às 10:21 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Felipe Nunes

Fala Felipe,

Tenho sim uma maneira mais atual de usar a API do GA... vou colocar no meu backlog para atualizar este post, aí te aviso.

Abs!

02-07-2015 às 19:05 Responder

Eder

Em resposta a Rodolfo Pereira

Ola Rodolfo, vc ja disponibilizou a nova forma de usar a api do GA em c#?

09-11-2015 às 00:33 Responder

Rodolfo Pereira

Rodolfo Pereira

Em resposta a Eder

Ainda não cara, me desculpe :(

Semana que vem vou focar nisso :)

18-12-2015 às 14:28 Responder

eder

Em resposta a Rodolfo Pereira

Aguardamos valeu cara.
Boas Festas!!!

18-12-2015 às 15:45 Responder

Alexandre

Rodolfo, estou precisando do código atualizado para usar a API do Google Analytics, tem um exemplo de código funcionando para me passar ?

Obrigado

18-01-2016 às 19:29 Responder

Cesar Pimenta

Rodolfo Parabéns pelo blog, estou acompanhando esse post em especifico pois foi de grande valia, aguardando ansioso pela atualização do código.

Grande abraço!

26-01-2016 às 10:57 Responder