Neste artigo vou mostra como usar a API de exportação de dados do Google Analytics usando C# - ASP.NET.
Podemos listar contas, inclusive fazer download dos dados do Google Analytics.
Download das 3 DLLs necessarias aqui.
Se preferir faça download da API .NET - Google Data API no link abaixo
http://code.google.com/p/google-gdata/downloads/detail?name=Google_Data_API_Setup_1.8.0.0.msi&can=2&q=
Ou então faça o download do projeto completo no final do artigo.
Copie as 3 DLLs, Google.GData.Client.dll, Google.GData.Analytics.dll e Google.GData.Extensions.dll para a pasta bin do projeto.
Crie uma página Default.aspx para listar suas contas do Google Analytics. Para quem tem apenas uma conta, esse passo pode parecer meio inútil, mas para quem tem várias, ajuda.
Default.aspx
<asp:Repeater ID="repContas" runat="server">
<ItemTemplate>
<a href="Detalhes.aspx?profileId=<%# Eval("Value") %>">
<%# Eval("Key") %>: <%# Eval("Value") %>
</a>
</ItemTemplate>
</asp:Repeater>
Default.aspx.cs
using Google.GData.Analytics;
using Google.GData.Extensions;
...
protected void Page_Load(object sender, EventArgs e)
{
const string USERNAME = "[email protected]"; //Usuario
const string PASSWORD = "senha"; //Senha
AccountQuery query = new AccountQuery();
AnalyticsService service = new AnalyticsService("AnalyticsSampleApp");
service.setUserCredentials(USERNAME, PASSWORD);
AccountFeed accountFeed = service.Query(query);
// Criando um Dictionary para popular o Repeater
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (AccountEntry entry in accountFeed.Entries)
{
//Adicionando itens no Dictionary
dic.Add(entry.Title.Text, entry.ProfileId.Value);
}
//Populando o Repeater
repContas.DataSource = dic;
repContas.DataBind();
}
Resultado:
Agora vamos criar a página Detalhes.aspx para mostrar os detalhes das contas.
Vou fazer uma consulta simple, visits + pageviews dos últimos 7 dias.
Detalhes.aspx
<asp:Repeater ID="repContas" runat="server">
<HeaderTemplate>
<table style="width:400px">
<tr>
<td><strong>Data</strong></td>
<td><strong>Visitas</strong></td>
<td><strong>Visitantes</strong></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Convert.ToString(Eval("Title.Text")).Replace("ga:date=", "") %></td>
<td><%# Eval("Metrics[0].Value")%></td>
<td><%# Eval("Metrics[1].Value")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Detalhes.aspx.cs
using Google.GData.Analytics;
using Google.GData.Extensions;
...
protected void Page_Load(object sender, EventArgs e)
{
const string USERNAME = "[email protected]"; //Usuario
const string PASSWORD = "senha"; //Senha
//Google Analytics Account Feed
const string dataFeedUrl = "https://www.google.com/analytics/feeds/data";
//Pegando o Profile ID que vem por QueryString "Default.aspx?profileId=ProfileID"
string profileId = Request.QueryString["profileId"]; //
AnalyticsService service = new AnalyticsService("AnalyticsSampleApp");
service.setUserCredentials(USERNAME, PASSWORD);
DataQuery query = new DataQuery(dataFeedUrl);
query.Ids = profileId;
//Use virgula para separa
query.Metrics = "ga:visits,ga:visitors"; //pegar métricas
query.Dimensions = "ga:date"; //pegar dimesões
//para ordenar de forma decrescente use sinal de negativo
query.Sort = "-ga:date,ga:visits"; //Ordenar
//Data de inicio
query.GAStartDate = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
//Data de fim
query.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd");
DataFeed dataFeed = service.Query(query);
repContas.DataSource = dataFeed.Entries;
repContas.DataBind();
}
Resulatdo:
Para mais detalhes você pode ver as consultas mais comuns à API de exportação de dados no link abaixo.
API de exportação de dados - Consultas comuns
http://code.google.com/intl/pt-BR/apis/analytics/docs/gdata/gdataCommonQueries.html
Tem tambem este documento que descreve todas as dimensões e métricas disponíveis através do feed de dados da API de exportação de dados.
Referência de dimensões e métricas
http://code.google.com/intl/pt-BR/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html
Download do Projeto