R

R İle Google Analytics Reporting API Erişimi

Güncelleme:
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ı ...
GÖRSEL

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. Ö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 İle Neler Yapabiliriz?

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ğlar.

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ı inceleyebilirsiniz.

Google Analytics Reporting API

R İle Google Analytics Reporting API Erişimi

Reporting API işlemleri için googleAnalyticsR paketini kullanacağım. 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ı gerekmekte. İ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 atabilirsiniz.

Gelelim örnek uygulamamıza.

1
2
3
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üşürmekte. 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.

4
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.

5
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şebiliriz. Bu bilgilere ayrıca Account Explorer üzerinden de ulaşabilirsiniz. O halde ilk isteğimizi gerçekleştirebiliriz.

6
7
8
9
10
11
12
13
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.

14
15
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 Explorer ve Request Composer sayfalarını kullanabilirsiniz.

İleri Okumalar
Kaynakça
  1. Google Analytics Reporting API v4
  2. googleAnalyticsR – Google Analytics API into R
  3. ga: Lists all columns for a Google Analytics core report type
Ceyhun Enki Aksan

Kullanıcı Davranışları Analizi (User Behavior Analysis) ve Kullanıcı Deneyim Tasarımı (UX Design) üzerine çalışmalar yürütmekte, bu süreçte edindiğim teknik ve pratik bilgileri fayda sağlamak motivasyonuyla (afaik / as far as i know) paylaşmaktayım.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.