C# Google Analytics Api ile Kullanıcıları Çekme

İbrahim     15 Kasım 2018     467     2    
C# Google Analytics Api Kullanımı adlı makalemde apiyi nasıl etkinleştireceğimizi göstermiştim.Bu makalede google analytics api ile web sitemize giren kullanıcıları çekmeyi göstereceğim.Önceki makalemde oluşturmuş olduğumuz aspnet mvc projesi üzerinden gidelim.

İlk olarak projemiz içersinde "GoogleAnalytisc" adnda bir klasör oluşturalım.İçerisine "RaporlamaServisi" adında bir sınıf oluşturalım.

using Google.Apis.AnalyticsReporting.v4;
using Google.Apis.AnalyticsReporting.v4.Data;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using System;
using System.Collections.Generic;
using System.IO;
using System.Web;

namespace GoogleAnalyticsDataTake.GoogleAnalytisc
{
    public class RaporlamaServisi
    {
        readonly string dosyaYolu = HttpContext.Current.Server.MapPath("~/App_Data/724code.json"); 
        readonly string gorunumKimligi = "";
        GoogleCredential kimlikBilgileri;
        AnalyticsReportingService raporlamaServisi;

        public RaporlamaServisi()
        {
            try
            {
                using (var dosyaAkisi = new FileStream(dosyaYolu, FileMode.Open, FileAccess.Read))
                {
                    string[] kapsamlar = { AnalyticsReportingService.Scope.AnalyticsReadonly };
                    var googleKimlikBilgisi = GoogleCredential.FromStream(dosyaAkisi);
                    kimlikBilgileri = googleKimlikBilgisi.CreateScoped(kapsamlar);
                }

                raporlamaServisi = new AnalyticsReportingService(
                new BaseClientService.Initializer
                {
                    HttpClientInitializer = kimlikBilgileri
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        public GetReportsResponse Kullanicilar()
        {
            var tarihAraligi = new DateRange
            {
                StartDate = "2018-10-01",
                EndDate = "2018-10-31"
            };
            var metric = new Metric
            {
                Expression = "ga:users",
                Alias = "expression"
            };
            var tarih = new Dimension { Name = "ga:date" };

            var raporSorgusu = new ReportRequest
            {
                DateRanges = new List<DateRange> { tarihAraligi },
                Dimensions = new List<Dimension> { tarih },
                Metrics = new List<Metric> { metric },
                ViewId = gorunumKimligi
            };
            var raporSorgusunuGetir = new GetReportsRequest
            {
                ReportRequests = new List<ReportRequest> { raporSorgusu }
            };
            var istekler = raporlamaServisi.Reports.BatchGet(raporSorgusunuGetir);
            var gelenVeriler = istekler.Execute();
            return gelenVeriler;
        }
    }
}

Sınıf içersinde ilk olarak indirmiş olduğumuz json dosyasının yolunu veriyoruz.Görünüm kimliğini bulmak için google analytics 'in sitesine giriyoruz.Yönetici paneline giriyoruz.Sağ bölmede bulunan görünüm ayarlarına tıklıyoruz ve görünüm kimliğini alıp kodumuza ekliyoruz.RaporlamaServisi constructorunda json dosyasında bulunan bilgilere erişiyor.Kullanıcılar methodunda web sitemize giren kullanıcıların sayısını buluyoruz.Burada StartDate ve EndDate kısımlarını değiştirerek tarih aralıklarını kendiniz belirleyebilirsiniz.

HomeController adında controller oluşturalım.

using GoogleAnalyticsDataTake.GoogleAnalytisc;
using System.Web.Mvc;

namespace GoogleAnalyticsDataTake.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            RaporlamaServisi raporlama = new RaporlamaServisi();
            var veriler = raporlama.Kullanicilar();
            return View(veriler);
        }
    }
}

Index action'ımıza kullanıcıları çektik ve view'e göndereceğiz.

Şimdi Index action'ımızın üstüne sağ tıklayak add view diyelim ve view'imizi oluşturalım.

@model Google.Apis.AnalyticsReporting.v4.Data.GetReportsResponse
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>


<table border="1">
    <tr>
        <th>Tarih</th>
        <th>Kullanıcı Sayısı</th>
    </tr>
    @foreach (var x in Model.Reports.First().Data.Rows)
    {
        <tr style="height:50px;">
            <td style="width:150px;">@string.Join(", ", x.Dimensions)</td>
            <td style="width:150px;">@string.Join(", ", x.Metrics.First().Values)</td>
        </tr>
    }
</table>

Çalıştırdığımıza verilerimiz karşımızda olacak arkadaşlar.

Kodlarım biraz dağınık olabilir.Siz konuyu anladıysanız kendiniz kodlarınızı daha düzenli bir hale getirebilirsiniz.Anlatacaklarım bu kadar arkadaşlar.

Ayrıntılı bilgi için : 

https://developers.google.com/analytics/devguides/reporting/core/v4/basics

 


Etiketler:  
csharp
google-analytics-ile-veri-cekme
google-analytics-ile-kullanicilari-cekme
google-analistic


Paylaş:  

Bir Cevap Yazın

S

Semra Karaçoban 21 Ocak 2019
Çoğu yerde aradım taradım ama verileri bir türlü çekememiştim.Türkçe kaynak olarak bu paylaşımı bulduğuma gerçekten çok memnun oldum İbrahim Hocam.Elinize sağlık.Çok teşekkürler.

İbrahim Çakal 21 Ocak 2019
Rica ederim Semra Hanım, faydası olduysa ne mutlu bana.