Önceki


Sonraki
  • Anasayfa
  • PHP
  • Google Analytics Verilerini Php İle Web Sayfamıza Çekelim 2015

Google Analytics Verilerini Php İle Web Sayfamıza Çekelim 2015  Tam Ekran

Herkese Merhaba,
Bu konuyla ilgili 2013 yılında bir makale yayınlamıştım.Fakat orada bahsettiğim metodlar geçerliliğini yitirdi.Size sadece google tarafından sağlanmış php kütüphaneleriyle farklı herhangi bir kütüphane veya classa gerek kalmadan analytics verilerimizi nasıl alırız bunu anlatacağım.

Bu yazı buradaki makalenin geçerliliğini yitirmesi sonucu yazılmıştır.

Öncelikle bildiğiniz gibi eski tip sınıflar ve kütüphanelerde google analytics verileri için sizden email adresiniz ve şifreniz istenir.Bu gizlilik kavramına ters bir konu ve paylaşımlı hosting kullanıyorsanız mail hesabınızın bilgileri hiçde güvenli bir yerde değil emin olabilirsiniz

Yazımız 3 Adımdan Oluşacak

1- Google Analytics API yi aktif etmek
2- Google Analytics hesabımıza API için erişim izni vermek
3- PHP ile Google analytics verilerini çekmek

Gereklilikler

  1. Google Hesabı
  2. Google API client Lıbrary (PHP)

 

Google Analytics API yi aktif etmek

Google analytics apiyi aktif etmek için google developer console a giriş yapıyoruz

step1

step2

Projemizi ve hesabımızı oluştudurduktan sonra API Sekmesinden google analytics apiyi aratalım ve çıkan ekranda analytics apiye tıklayalım gelen ekranda enable apı ye tıklayarak google analytics apiyi aktif hale getirebiliriz

step3

step4

Apimizi aktif hale getirdikten sonra apimizin erişimde kullanacağı email adresi clientID ve p12 keyi almak için Sol menuden API nin altındaki Credentialsa tıklayalım.

Gelen sayfada Create New Client Id ye tıklayarak yeni bir servis hesabı oluşturalım.Google bize resimde görüldüğü gibi clientID ve email hesabı oluşturdu.Generate P12 key diyerekde p12 dosyamızı bilgisayarımıza kaydedelim

step5

step6

Gerekli işlemleri başarıyla yaptıktan sonra bize apiye erişim için lazım olan şeyler
—Oluşturulan Email Hesabı
—P12 Key

Google Analytics hesabımıza API için erişim izni vermek

Google analytics hesabımıza girelim ve üstte yönetici sekmesine gelelim.Sırasıyla aşağıda gösterilen adımları takip ederek yukarda oluşturmuş olduğumuz servisin google analytics hesabımıza erişim iznini tanımlıyoruz

step7

step8

Yukardaki bütün işlemleri yaptıysak artık gerçekten sıkıcı olan yerleri geçtik diyebiliriz 🙂
Sıra geldi php ile verileri çekip göstermeye

Google Verilerini Php Yardımıyla Alalım

Google API Php clientini indirelim
  Buradan İndirebilirsiniz

Kütüphaneyi indirdirip php dosyalarını çalıştırdığımız dizine atalım ve bu dizinde yeni bir test dosyası oluşturalım (Test.php)


function getService()
{
  // Yeni bir Analytics servis nesnesi oluşturalım ve geri döndürelim

  // Google API php kütüphanesini yükleyelim
  require_once 'google-api-php-client/src/Google/autoload.php';

  // Servis Maili ve P12 dizini
  $service_account_email = 'Developer Console Servis Email Adresiniz';
  $key_file_location = 'p12 keyinizin dizini bu dosyayla aynıysa dosyaismi.p12';

  //Yeni bir client nesnesi oluşturalım
  $client = new Google_Client();
  $client->setApplicationName("Test");
  $analytics = new Google_Service_Analytics($client);

  // p12 keyini google autha okutalım ve yetki alalım
  $key = file_get_contents($key_file_location);
  $cred = new Google_Auth_AssertionCredentials(
      $service_account_email,
      array(Google_Service_Analytics::ANALYTICS_READONLY),
      $key
  );
  $client->setAssertionCredentials($cred);
  if($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion($cred);
  }

  return $analytics;
}

Üst kısımda yeni bir servis nesnesi oluşturduk.Bu nesne üzerinden apiye istediğimiz sorguları yollayabiliriz
En basit haliyle son 7 gün sayfamıza giren oturumların toplamını aşağıdaki sorguyla alabiliriz

function getResults(&$analytics, $profileId) {
  // Apiye Oturumlar için örnek bir sorgu yollayalım
     return $analytics->data_ga->get(
       'ga:' . $profileId,
       '7daysAgo',
       'today',
       'ga:sessions');
}

Daha Gelişmiş Bir sorgu yollayalım

  • Dimensions : Veriyi hangi bazda almak istiyoruz (Örnekte günlük)
  • Metrics : Hangi tür verileri almak istiyoruz (Oturumlar,Sayfa Gösterimleri)
function getResults(&$analytics, $profileId) {
 
   $optParams = array(
      'dimensions' => 'ga:day',
      'metrics' => 'ga:pageviews,ga:sessions'
   );

   return $analytics->data_ga->get(
       'ga:' . $profileId,
       '30daysAgo',
       'today',
       'ga:sessions',$optParams);
}

tt

Oluşturduğumuz fonksiyonları çağıralım ve çıktıyı ekrana bastıralım
Google Profile Id sini öğrenmek için
Profile Id

Php Kodlarımız

$profile = "Google Analytics Profile Id" // ga:....
$analytics = getService();
$results = getResults($analytics, $profile);
print_r($results)

Aşağıdaki Linkten Grafiklere dökülmüş örnek bir test.php dosyasını görebilirsiniz
Test.php İndir

Demo

Yorumlar

  • Ercan , 27 Temmuz 2015 - 17:05

    Merhaba,
    yazı için teşekkürler. Yazı tam olarak bitti mi? Birde, bilgileri 30 günlük değilde hangi gündeysek o günün istatistiklerini çekemezmiyiz ? Yardımlarınız için teşekkürler.

    Cevapla
  • Volkan , 29 Temmuz 2015 - 06:58

    Merhabalar,

    Verileri çıkartıyorum teşekkürler fakat üst satırda br hata mesajı alıyorum

    hata : Deprecated: google-api-php-client’s autoloader was moved to src/Google/autoload.php in 1.1.3. This redirect will be removed in 1.2. Please adjust your code to use the new location. in /google-api-php-client-master/autoload.php on line 25

    nasıl düzeltebilirim ?

    Cevapla
  • ayhan , 10 Ağustos 2015 - 19:48

    Hocam başlangıç tarihi bölümü olan 7daysAgo yerine otomatik tarih atılmasını istiyorum.örneğin date(“Y-m-01”) kodunu kullanarak başlangıç tarihini bu ayın ilk günü yapmak istiyorum.böylece içinde bulunduğumuz ayın verilerini çekecek ve her ay kodda başlangıç tarihini değiştirmek zorunda kalmayacağım.Ancak bunu bir türlü yapamadım.Yardımcı olursanız çok sevinirim.

    Cevapla
    • Mustafa ERCEL , 10 Ağustos 2015 - 20:39

      https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startDate
      Burda aradığın sorunun cevabını bulacaksın hocam kolay gelsin

      Cevapla
      • ayhan , 11 Ağustos 2015 - 15:52

        Hocam orada cevabımı bulamadım.$baslangic diye bir değişken atıyorum.Bu değişken bana echo ile yazdırınca 2015-07-01 sonucunu sorunsuz şekilde veriyor.Ancak $baslangiç değişkenini şu şekilde

        return $analytics->data_ga->get(
        ‘ga:’ . $profileId,
        $baslangic,
        ‘today’,
        ‘ga:sessions’,$optParams);

        kodlara aktardığım zaman

        Fatal error: Uncaught exception ‘Google_Exception’ with message ‘(get) missing required param: ‘start-date” in F:\wamp\www\admin\gapi\src\Google\Service\Resource.php on line 166

        Google_Exception: (get) missing required param: ‘start-date’ in F:\wamp\www\admin\gapi\src\Google\Service\Resource.php on line 166

        hatasını veriyor.Hiçbir şekilde startdate’i değişkene atayamıyorum.Bu konuda yardımcı olabilirseniz çok sevinirim.

        Cevapla
  • Murat , 11 Ağustos 2015 - 16:42

    Google Analitik verilerinden üç aşağı beş yukarı farklı veriler geliyor.. bilginize..,

    Cevapla
    • Mustafa ERCEL , 14 Ağustos 2015 - 17:32

      Aldığınız tarihlere dikkat edebilirsiniz , benim demoda herhangi bir hata oluşmadı birebir aynı sonuç verdi

      Cevapla
      • AYHAN , 15 Ağustos 2015 - 01:18

        Hocam paylaştığınız dosyadaki index.php’nin en başına $baslangic = “2015-08-01”; yazıyorum.
        resmi burada: https://gyazo.com/e6a265b445e5055b83479a2d467dfa2d

        Daha sonra kodlardaki startdate satırına $baslangic değişkenini ekliyorum.
        resmi burada: https://gyazo.com/3f7684d8d1a4d555fee9a0cd25de06d0

        ve hata veriyor.resmi burada: https://gyazo.com/8bf893a29582d1e1e17b1de524a3366e

        startdate satırına 2015-08-01 şeklinde normal tarih girdiğimde sorunsuz çalışıyor.Aynı zamanda start date’yi date(‘Y-m-d’,strtotime(“first day of this month”)) şeklinde yazdığımdada sorun çıkmıyor.Ancak date(‘Y-m-d’,strtotime($baslangic)) yaptığım zaman hata veriyor çünkü bu kod normalde ağustos ayının ilk gününü vermesi gerekirken sadece 1970-01-01 tarihini veriyor.Sorun nerede olabilir? php versiyon 5.4.12 – apachi versiyon 2.4.4

        Cevapla
  • Murat Çeşme , 18 Ağustos 2015 - 12:27

    Merhaba hocam, kaç aydır uğraşıyorum şunla bir türlü yapamadım. Dediklerinizin hepsini yaptım ama yinede boş sayfa gösteriyor. Profil idsini aldığımız siteyle yüklediğimiz site aynı olmak zorunda mı yani a sitesinin verilerini b sitesine çekebilir miyiz?

    Cevapla
    • Mustafa ERCEL , 22 Ağustos 2015 - 14:42

      Hata mesajları açıkmı sisteminizde , a sitesinin verilerini herhangi bir x sitesine tabiki çekebilirsiniz
      Sonuçta api ile haberleşiyorsunuz apiye erişim izinlerini verin getService fonksiyonunda analytics değişkenini var dump ile basın çıktısını bir inceleyin

      Cevapla
  • Ercan , 18 Ağustos 2015 - 13:52

    https ile başlayan sitelerdeki verileri çekmiyor nasıl yapabiliriz bu işlemi

    Cevapla
  • ahmet , 12 Eylül 2015 - 14:58

    Fatal error: Uncaught exception ‘Google_Auth_Exception’ with message ‘Unable to parse the p12 file. Is this a .p12 file? Is the password correct? OpenSSL error: error:0D06B08E:asn1 encoding routines:ASN1_D2I_READ_BIO:not enough data’ in /home/siteurl/public_html/class/google-api-php-client/src/Google/Signer/P12.php:55 Stack trace: #0 /home/siteurl/public_html/class/google-api-php-client/src/Google/Auth/AssertionCredentials.php(130): Google_Signer_P12->__construct(‘0\x82\n\x08\x02\x01\x030\x82\t\xC2\x06\t*\x86…’, ‘notasecret’) #1 /home/siteurl/public_html/class/google-api-php-client/src/Google/Auth/AssertionCredentials.php(107): Google_Auth_AssertionCredentials->makeSignedJwt(Array) #2 /home/siteurl/public_html/class/google-api-php-client/src/Google/Auth/OAuth2.php(312): Google_Auth_AssertionCredentials->generateAssertion() #3 /home/siteurl/public_html/helper/analitik.php(24): Google_Auth_OAuth2->refreshTokenWithAssertion(Object(Google_Auth_AssertionCredentials)) #4 /home/siteurl/public_h in /home/siteurl/public_html/class/google-api-php-client/src/Google/Signer/P12.php on line 55

    hatası alıyorum yardımcı olurmusunuz

    Cevapla
  • duhan , 19 Eylül 2015 - 18:39

    merhaba bunları farklı sekıllerde yada datalarda yapamazmıyız mesela ben grafık yuvarlak olsun ıstıyorum yada analytıc den farklı verıler gelsın ıstıyorum nasıl yaparız.?

    Cevapla
    • Mustafa ERCEL , 20 Eylül 2015 - 02:07

      Konudaki kodlardan ilerlersek sorgunuza göre çektiğiniz tüm veriler zaten $result adlı dizide
      Bundan sonrası istediğiniz grafigi kullanabilirsiniz.İster google chart olsun ister diğerleri .Sadece kullanacagınız grafik eklentisine bu datayı göstermeniz yeterli

      Cevapla
  • Hamster , 10 Kasım 2015 - 16:00

    Merhabalar hocam,

    An error occurred: This library must be installed via composer or by downloading the full package. See the instructions at https://github.com/google/google-api-php-client#installation. hata almaktayım sizin dediğiniz gibi dosyaları indirip ekledim ? Sorun nedir ?

    Cevapla
  • ilyas , 12 Kasım 2015 - 14:00

    merhabalar. online ziyaretçi sayısını sitemizde gösterebilir miyiz bu yöntemle?

    Cevapla
  • enes , 16 Kasım 2015 - 00:12

    hocam bu eski api kayıt ekranı yeni ekran çok ama çok farklı nasıl yapıcaz ?

    Cevapla
  • kp , 21 Aralık 2015 - 17:48

    Fatal error: Uncaught exception ‘Exception’ with message ‘This library must be installed via composer or by downloading the full package. See the instructions at https://github.com/google/google-api-php-client#installation.’ in /home/kivancpe/public_html/analytics/google-api-php-client/src/Google/autoload.php:14 Stack trace: #0 /home/kivancpe/public_html/analytics/kivancpehlivan.php(16): require_once() #1 /home/kivancpe/public_html/analytics/kivancpehlivan.php(56): getService() #2 {main} thrown in /home/kivancpe/public_html/analytics/google-api-php-client/src/Google/autoload.php on line 14

    Cevapla
  • orcun , 02 Ocak 2016 - 16:48

    benim yazdığım kullanıcı İD sinde birden fazla site var. Rastgele değilde, İstediğim sitenin kayıtlarının gelmesini nasıl sağlarım?

    Cevapla
  • Can Şahin , 09 Ocak 2016 - 11:17

    P12 kodunu yada dosyasını nerden bulucam o kısmı anlamadım..

    Cevapla
  • btu , 26 Ocak 2016 - 14:33

    merhaba p12 dosyasını kod okuyamıyor permission denied hatası veriyor. bir çözümü bulamadım nette.. siz biliyor musunuz

    Cevapla
  • Kamil , 04 Şubat 2016 - 18:57

    Merhaba Fatal error: Class ‘Google_Client’ not found in /home/***.php sorunu yaşamaktayım. Neden olabilir acaba?

    Cevapla
  • Sıfır Araba Fiyatları , 25 Haziran 2016 - 19:32

    google developer console ‘da hesap açmak ücretli mi?
    ya da kredi kartı bilgilerini vermeden hesap açamaz mıyız?

    Cevapla
  • Remzi , 02 Eylül 2016 - 17:56

    Hocam elinize sağlık. Sistemi kullanıyorum. Ancak şöyle bir problem var. start-date 30daysAgo, end-date today olarak kullanıyorum. Düne kadar gayet düzgündü. Ancak dün itibariyle son gün olarak 31 ağustosta takıldı kaldı. eylül ayı istatistiklerini çekmiyor. Bu konuda ne yapabilirim?

    Cevapla
  • Mert Köseoğlu , 24 Eylül 2016 - 10:14

    Message: file_get_contents(API Project-f6b5309e6e11.p12): failed to open stream: No such file or directory

    Bu hatayı almaktayım ben de.

    Cevapla
  • evren özcan , 06 Ekim 2016 - 17:18

    Çok güzel ve adım adım anlatmışsınız, sorunsuz çalışıyor, teşekkürler

    Cevapla
  • Aygün , 26 Aralık 2016 - 22:08

    Sizin resimlerde göterdiğiniz gibi bir şekilde ekran karşımıza çıkmıyor, sonra oluşturuyoruz ama bu seferde yazdığımızda hata veriyor.

    Cevapla
Arama
Beni yukari isinla