В завершающей статье мы расскажем Вам, как собрать статистику с Google Analytics наиболее эффективным способом.
Как всегда, мы используем нашу утилиту DataAnalyticsTool (читайте более подробно здесь) и сам поисковый сервис Google.
Изначально мы должны разобраться с Google Analytics Dimensions и Metrics. Перейдите по ссылке, где описаны все необходимые спецификации.
В нашем случае мы отобрали следующее:
Для анализа редиректов
Dimensions: ga:browser,ga:date,ga:source,ga:hostname
Metrics: ga:visits
Для анализа сессий
Dimensions: ga:browser,ga:date,ga:source,ga:medium
Metrics:ga:visits,ga:pageviewsPerVisit,ga:avgTimeOnPage,ga:percentNewVisits,ga:visitBounceRate
Для анализа страниц
Dimensions: ga:browser,ga:date,ga:source,ga:pageTitle
Metrics:ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:visitBounceRate,ga:exitRate
Когда мы разобрались, какие метрики нам нужны, переходим к разработке. А точнее к тесному и плотному сотрудничеству с Google API.
Для этого мы используем используем следующие библиотеки (для Windows):
- Google.GData.Client.dll
- Google.GData.Analytics.dll
- Google.GData.Extensions.dll
Они предоставляют развитую объектную модель dotNet для работы с Google Analytics API.
Ниже представлены классы, которые мы использовали.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
namespace Google.GData.Analytics { public class AnalyticsService : Service { public const string GAnalyticsService = "analytics"; public AnalyticsService(string applicationName); protected override void InitVersionInformation(); protected void OnNewFeed(object sender, ServiceEventArgs e); public AccountFeed Query(AccountQuery feedQuery); public DataFeed Query(DataQuery feedQuery); } public class DataQuery : FeedQuery { public const string dataFeedUrl = "https://www.google.com/analytics/ feeds/data"; public DataQuery(); public DataQuery(string queryUri); public DataQuery(string id, DateTime startDate, DateTime endDate); public DataQuery(string id, DateTime startDate, DateTime endDate, string metric, string dimension); public DataQuery(string id, DateTime startDate, DateTime endDate, string metric, string dimension, string sorting); public DataQuery(string id, DateTime startDate, DateTime endDate, string metric, string dimension, string sorting, string filters); public DataQuery(string id, DateTime startDate, DateTime endDate, string metric, string dimension, string sorting, string filters, string segment); public string Dimensions { get; set; } public string Filters { get; set; } public string GAEndDate { get; set; } public string GAStartDate { get; set; } public string Ids { get; set; } public string Metrics { get; set; } public bool? PrettyPrint { get; set; } public string Segment { get; set; } public string Sort { get; set; } protected override string CalculateQuery(string basePath); protected override Uri ParseUri(Uri targetUri); } public class DataEntry : AbstractEntry { public DataEntry(); public List<Dimension> Dimensions { get; } public List<Metric> Metrics { get; } public string getAccountExtensionValue(string extension); public SimpleAttribute getDataExtension(string extension); public SimpleElement setDataExtension(string extension, string newValue); } } Dimension и Metrics содержат свойство Value, которое мы используем для доступа к значениям. |
Наш код выглядит следующим образом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// Используем namespaces using Google.GData.Analytics; using Google.GData.Client; using Google.GData.Extensions; псевдо-код string userName = "…"; string passWord = "…"; const string dataFeedUrl = "https://www.google.com/analytics/feeds/ data"; var service = new AnalyticsService("WebSiteAnalytics"); service.setUserCredentials(userName, passWord); var dataQuery = new DataQuery(dataFeedUrl) { Ids = txtProfileId.Text, Dimensions = txtDims.Text, Metrics = txtMetrics.Text, GAStartDate = dtStart.Value.ToString("yyyy-MM-dd"), GAEndDate = dtEnd.Value.ToString("yyyy-MM-dd") }; var dataFeed = service.Query(dataQuery); string statData = ""; foreach (DataEntry en in dataFeed.Entries) { // Dimensions statData += processDimensions( en.Dimensions ); statData += processMetrics( en.Metrics ); } |
Мы подошли к концу нашей трилогии о сборе cтатистики. Надеемся, эти статьи помогут Вам в работе и принесут пользу. Если у Вас возникли вопросы по поводу написнного – мы всегда рады Вашим письмам.
До новых публикаций!