R İle Google Analytics Reporting API Erişimi

R İle WordPress REST API Erişimi başlıklı yazını devamı olarak bu yazıda R ile Google Analytics Reporting API erişimi gerçekleştireceğiz. Bu sayede sayfa ve kullanıcı metrik ve boyutları üzerinden tablolar oluşturabilir ve grafikler düzenleyebiliriz.

AA

Örneğin, bir önceki yazımda WordPress postlarına ait bilgileri çekmiştik. Bu yazıdaki örnek ile de belirli tarihler arasındaki sayfa görüntüleme, hemen çıkma oranı, oturum sayısı gibi bilgilere ulaşabileceğiz. Bir sonraki yazıda da bu 2 tabloyu birleştirerek grafikler oluşturabileceğiz.

Google Analytics Reporting API

Google Analytics Reporting API, Google Analytics rapor verilerine ulaşabilmemizi sağlayan en gelişmiş programatik method (programmatic method) olarak ifade edilebilir. Bu API aracılığıyla özelleştirilmiş kontrol panelleri (dashboard) oluşturabilir, kompleks raporlama görevlerini otomatik bir şekilde yürütülebilir hale getirebilir, Google Analytics verilerini diğer uygulamalarla ilişkilendirebiliriz.

Google Analytics

Google Analytics Raporlama API‘si (sunulan özellikler değişkenlik gösterebilir) şu özellikleri sağlar1.

Metrik İfadeleri (Expressions)

API sadece yerleşik (built-in) metrikler değil, aynı zamanda matematiksel işlemlerde ifade edilen metrik kombinasyonlarına da erişim imkanı sunar. Örneğin, gerçekleştirilen oturum başına tamamlanan hedef sayısını (örneğin, goal1 için) ga:goal1completions / ga:sessions ile elde edebiliriz.

Çoklu Tarih Aralığı

Google Analytics raporlama ekranında sadece tek bir tarih aralığına ait verileri alabiliriz. Ancak, API sayesinde tek bir taleple iki tarih aralıındaki verileri edinebiliriz.

Kohortlar ve Yaşam Boyu Değer (Lifetime Value)

API, Kohort ve Yaşam Boyu Değer raporları için zengin bir istek kapsamına sahiptir.

Çoklu Segment Kullanımı

API ile tek bir istekte birden fazla segmentin işleme alınmasını sağlayabiliriz. Kullanılabilecek segmentlerin listesi ve tanımları için Segments: list sayfasını inceleyebilirsiniz2.

Google Analytics Reporting API

R İle Google Analytics Reporting API Erişimi

Reporting API işlemleri için3 googleAnalyticsR paketini kullanacağım4. Ancak, bu işlemler öncesinde Google API Console üzerinden Google Analytics Reporting API erişimini etkinleştirmeli ve erişime izin verilmesi için Kimlik Bilgileri, OAuth İstemci Kimlikleri tanımlarının yapılması gerekmekte5. İstemci Kimliği ve İstemci Gizli Anahtarı ile R üzerinden erişimlerimizi sağlayabiliriz. Diğer yandan bu bilgileri herhangi bir yazım/tanım hatasına maruz kalmadan json dosyası üzerinden de yapılandırabiliriz. Bunun için Diğer için istemci kimliği sayfasında bulunan JSON dosyasını indir bağlantısını tıklayarak ilgil dosyayı bilgisayarımıza indirip gar_set_client() fonksiyonu içerisinden dosya yolunu belirtmemiz yeterli olacaktır. Uygulama aşamasında bu konuya ayrıca değineceğim.

Kurulum süreciyle ilgili olarak ilgili dokümantasyon altında bulunan Enable the API başlığına göz atabilirsiniz6.

Gelelim örnek uygulamamıza.

googleAuthR::gar_set_client("/<client-secret>.apps.googleusercontent.com.json")
library("googleAnalyticsR")
gar_auth(email = "<email>")

Yukarıdaki kod parçacığında bulunan /<client-secret>.apps.googleusercontent.com.json bir üst paragrafta da belirttiğim kimlik bilgilerinin yer aldığı JSON dosyamız. İçeriği aşağı yukarı şu şekilde olacaktır:

{"installed":{"client_id":"123456789012-a34bcdefghijklm5noor6stuw7qzab7c.apps.googleusercontent.com","project_id":"personal-123456","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"1aBcDEFgHiJklM_N2OpPrsT3","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}

Bilgileri bu şekilde belirtmemiz sıklıkla karşılaşılan 403 hata ihtimalini de düşürmekte7. gar_auth(email = "") tanımı ise tekrar tekrar erişim isteği tanımlamak zorunda kalmamamızı sağlamakta. Burada belirtilen e-posta adresi Console API üzerinden API etkinleştirdiğiniz e-posta adresi olmalı.

Şimdiye kadar gerçekleştirdiğimiz işlemler erişimin sağlanması süreciydi. Bilgilerimiz doğru ve API etkin ise ilk adımı attık. Artık Google Analytics verilerine ulaşmak istediğimiz kullanıcı-mülk-görünüm seçimlerine geçiyoruz.

Öncelikle Google Analytics hesaplarımızı bir listeleyelim.

googleAnalyticsR::ga_accounts()

Bu fonksiyon ile API üzerinden bize tanımlı hesapların mülk id (webPropertyId), hesap adı (name), hesabın oluşturulma tarihi (created), yapılan son güncellemenin tarihi (updated), hesap yetkinliğimiz (permissions.effective) gibi bilgilerini görüntüleyebiliriz.

         id                 name             created             updated                          permissions.effective
1   1234567         Account Name 2006-12-11 11:07:15 2015-09-23 22:12:07 COLLABORATE,EDIT,MANAGE_USERS,READ_AND_ANALYZE
2  24681012         Demo Account 2014-09-06 17:53:33 2019-06-10 17:56:03                               READ_AND_ANALYZE
3  35791113        Business Name 2015-02-16 14:25:34 2018-05-01 09:17:56 COLLABORATE,EDIT,MANAGE_USERS,READ_AND_ANALYZE
8 135791113          Client Name 2017-12-08 14:24:09 2017-12-08 16:08:09              COLLABORATE,EDIT,READ_AND_ANALYZE

35791113 id’li hesap üzerinden ilerleyelim ve bu hesap ile ilişkili diğer kullanıcıları ve onların yetkinliklerini listeleyelim.

googleAnalyticsR::ga_users_list(35791113)

Şimdi, yukarıdaki fonksiyonun uygulanmasının ardından dönecek bilgilerde entity.profileRef.id ya da diğer bir ifadeyle Table ID (ids) altındaki değerler üzerinden artık metrik ve boyutlara erişebiliriz8. Bu bilgilere ayrıca Account Explorer üzerinden de ulaşabilirsiniz9. O halde ilk isteğimizi gerçekleştirebiliriz.

ga_id <- "ga:<entity.profileRef.id | Table ID (ids)>"

gaUserData <- google_analytics(ga_id,
  date_range = c(start_date, end_date), # tarih aralığı (yıl-ay-gün)
  metrics = c("ga:sessions", "ga:users", "ga:pageviews"), # metrikler
  dimensions = c("ga:sourceMedium", "date", "ga:userType"), # boyutlar
  segments = segment_ga4(name = "Organic Traffic", segment_id = "gaid::-5"), # segmentler (opsiyonel)
  max = -1) # dönecek maksimum kayıt sayısı

İlettiğimiz metrik, boyut ve segment bilgileri çerçevesinde edindiğimiz veriler şu şekilde olacaktır.

         sourceMedium       date          userType sessions users pageviews
1   (direct) / (none) 2018-01-02       New Visitor        3     3         3
2   (direct) / (none) 2018-01-03       New Visitor        2     2         2
3   (direct) / (none) 2018-01-04       New Visitor        4     4         5
4   (direct) / (none) 2018-01-05       New Visitor        2     2         2
5   (direct) / (none) 2018-01-06       New Visitor        6     6         6
6   (direct) / (none) 2018-01-06 Returning Visitor        1     1         1
7   (direct) / (none) 2018-01-07       New Visitor        4     4         4
8   (direct) / (none) 2018-01-08       New Visitor        3     3         3
9   (direct) / (none) 2018-01-08 Returning Visitor        1     1         1
 [ reached 'max' / getOption("max.print") -- omitted 8734 rows ]

str ile variable class'larını kontrol ettiğimizde sourceMedium ve userType chr olarak görünecektir. Aslında bu alanlar kategori temelli oldukları için factor olarak düzenlememiz daha doğru olacaktır.

gaUserData$sourceMedium <- factor(gaUserData$sourceMedium)
gaUserData$userType <- factor(gaUserData$userType)

Evet, metrik ve boyutları değiştirerek Kitle, Edinme, Davranış, Dönüşümler ve Raporlar ile pek çok kullanıcı ve sayfa versine ulaşabilir ve bu verileri kullanarak işlemler (görselleştirme, analiz, hesaplama vb.) gerçekleştirebiliriz. Metrik ve boyutlar ve isteklerle ilgili denemeler yapmak için Dimensions & Metrics Explorer10 ve Request Composer11 sayfalarını kullanabilirsiniz.

İleri Okumalar