Bir süre önce Google iki API servisini hizmete açtı. Bunlardan ilki olan Google Analytics API, geliştiricilerin yazdıkları client uygulamaları içerisinden mevcut Google Analytics profillerine read-only erişerek alacakları GA profil bilgilerini, rapor ve istatistik verilerini web ve mobil uygulamaları ile entegre edebilmelerine imkan tanırken, Google Chart API ise client tarafında özel olarak şekillendireceğiniz URL’ler vasıtasıyla çeşitli uygulamalarınız için PNG formatında, dinamik ve farklı türlerde (Bar, Line, Radar, Scatter plot, Venn diagram, Pie, Google-o-meter, Maps) grafik çizelgeler oluşturmanızı sağlamakta.
Gerek grafik analize meraklı oluşum, gerekse bu iki API’nin bir araya getirildiğinde uygulamalarda tamamen dinamik ve zengin bir içerik vadedeceğini düşündüğüm için her iki API ile ilgili olarak daha derinlemesine araştırma yapmaya karar verdim. Google Analytics Team tarafından desteklenen mevcut Java ve HTTP kaynak kodları ve kütüphaneler ile kullanıcılar tarafından desteklenmiş (ve ya desteklenmekte olan) Phyton, PHP ve Ruby tabanlı kütüphaneler arasından elbette kendi web uygulamama uygun olması açısından araştırmamın temelini bu API’lere yönelik PHP class’lar oluşturmaktaydı. Ayrı ayrı her ikisi için de birkaç kişinin gayet kullanışlı class’lar yazdığını ancak ikisinin birlikte entegrasyonu ile ilgili ümit ettiğim miktarda çalışma olmadığını görünce sözünü ettiğim entegrasyonu kendim yapmaya karar verdim. Ve sonucunda anasayfada ve aşağıda gördüğünüz şekilde dinamik grafik analiz çıktısı üretebilen bir entegrasyon sağlayabildim.
Denediklerim arasında kodlama titizliğini ve array çıktılarını beğenerek uygulamamda kullandığım iki örnek class içerisinden Google Analytics API PHP class çalışmasından dolayı Eldee’ye ve Google Chart API class çalışmasından dolayı Andrey Savchenko (Rarst)’a teşekkür ediyorum.
x ve y eksenlerine ilişkin ölçeklendirme, etiketleme, im pozisyonlama ve veri besleme gibi tüm detaylarının tamamen dinamik gerçekleştirilmesi sayesinde, çeşitli uygulamarımızda GA grafiksel analizlerinin el ile oluşturulması ve herhangi bir manipülasyona gerek kalmaksızın yürütülmesine olanak verecek bu çalışma, bize genel anlamda başka ne gibi avantajlar sağlamakta ?
- Uygulamalarımıza ilişkin analizleri takip etmek için sürekli olarak GA web arayüzünde oturum açmak durumunda kalmıyoruz.
- Çizelgeleri oluşturmak için gerekli veri akışını otomatikleştiriyor ve gerçek zamanlı veri beslemesi elde edebiliyoruz.
- Verileri yerel sistemimizde saklamaya, yedeklemeye ve bakım operasyonlarına gerek duymuyoruz.
- Bant genişliği kullanımı ve ilişkili servis yükünü Google sunucularına devrediyoruz.
- Çizelgeleri, istediğimiz işlevsel ve görsel kriterler çerçevesinde hazırlatarak herhangi bir forma bağımlı kalmıyoruz.
- Wordpress gibi blog uygulamalarımız içerisinde analiz verilerini yerel olarak saklayan eklentilere gerek kalmaksızın zengin istatistiksel sunumlar sağlayabiliyoruz.
- Tek bir noktadan birden fazla web uygulaması ve ya blog analizi gerçekleştirebiliyor, sort ve filters gibi ga: sorgulama parametreleri yardımıyla coğrafi ve demografik istatistikleri çizelgeler üzerinde online gerçek zamanlı yayımlayabilir hale geliyoruz.
Aşağıdaki kodu, ihtiyaçlarınız doğrultusunda düzenleyerek farklı şekil ve formlarda dinamik çizelgeler oluşturmak için kullanabilirsiniz ancak kodun çalışması için include etmeniz gereken class’ları yukarıda linklerini verdiğim ilgili sitelerden indirmeyi unutmayın. Kodu kullanır ve memnun kalırsanız tarafıma link vermeniz beni memnun edecektir.
<?php
// PHP Integration of "Google Analytics API" with "Google Chart API" for creating realtime dynamic statistics chart.
//
// Sezgin Bayrak, ipsure.com (2010)
require 'google_chart.php'; // By Andrey Savchenko (Rarst), http://www.rarst.net/script/google-chart/
include "googleanalytics.class.php"; // By Eldee, http://www.askaboutphp.com/63/google-analytics-api-class-for-php.html
// Set first date you want your GA stats begin to be collected
$lastMonth = date("Y-m-d", $_SERVER['REQUEST_TIME'] - 2592000);
$today = date("Y-m-d");
try {
// Create an instance of the GoogleAnalytics class using your own Google {email} and {password}
$ga = new GoogleAnalytics('your_account@gmail.com','your_password');
// Set the Google Analytics profile you want to access - format is 'ga:123456';
$ga->setProfile('ga:xxxxxxxx');
// Setting date range with pre-defined variables
$ga->setDateRange($lastMonth,$today);
// Generating report arrays for the date range, consisting of pageviews and visits
$report = $ga->getReport(
array('dimensions'=>urlencode('ga:date'),
'metrics'=>urlencode('ga:pageviews,ga:visits,ga:newVisits'),
)
);
// Arrange "page views" as a new array
$pviews = array();
foreach($report as $dimension => $metrics) {
array_push($pviews, $metrics['ga:pageviews']);
}
// Arrange "visists" as a new array
$visits = array();
foreach($report as $dimension => $metrics) {
array_push($visits, $metrics['ga:visits']);
}
// Extract various dates from the report array keys in order to use them as variables for x-axis labels
$days = array_keys($report);
list($d0, $d1, $d2, $d3, $d4, $d5, $d6, $d7, $d8, $d9, $d10, $d11, $d12, $d13,
$d14, $d15, $d16, $d17, $d18, $d19, $d20, $d21) = $days;
} catch (Exception $e) {
print 'Error: ' . $e->getMessage();
}
// Get the keys for max. values of page views and visits
function max_key($array) {
foreach ($array as $key => $val) {
if ($val == max($array)) return $key;
}
}
$array = $pviews;
$precord = max_key($array);
$array = $visits;
$vrecord = max_key($array);
// Always use max. value recorded in array for y-axis
$ymax = 1*(max($pviews));
// Devide it by six and round up to nearest whole number to set appropriate y-axis ticks
$ytick = ceil((max($pviews))/6);
// Chart settings
$traffic = new GoogleChart;
$traffic->type='lc';
$traffic->SetImageSize(600,200);
$traffic->SetChartMargins(0,30,0,0);
$traffic->SetEncode('simple');
$traffic->AddData($visits);
$traffic->AddData($pviews);
$traffic->AddChartColor('FF9900');
$traffic->AddChartColor('0077CC');
$traffic->AddLineStyle(3);
$traffic->AddLineStyle(2,5,5);
$traffic->AddDataLineStyle('0077CC',1,'0:30',3);
$traffic->AddFillArea('B','FF99007F',0);
$traffic->AddFillArea('b','E6F2FA7F',0,1);
$traffic->AddShapeMarker('o','666666',0,30,8);
$traffic->AddShapeMarker('o','FF9900',0,30,6);
$traffic->AddShapeMarker('o','555555',1,30,8);
$traffic->AddShapeMarker('o','0077CC',1,30,6);
$traffic->AddShapeMarker('o','666666',0,$vrecord,6);
$traffic->AddShapeMarker('o','900C0C',0,$vrecord,4);
$traffic->AddShapeMarker('o','666666',1,$precord,6);
$traffic->AddShapeMarker('o','900C0C',1,$precord,4);
$traffic->AddAxis('y,x');
$traffic->AddAxisRange(0,$ymax,$ytick);
$traffic->AddAxisLabel(array($d0,$d7,$d14,$d21,'Now'),1);
$traffic->SetGrid(round(100/4,2),0,1,3);
$traffic->AddAxisStyle('0000DD',1,0);
$traffic->AddAxisTickLength(-600,0);
$traffic->SetTitle('Visits/Page Views of Last 30 Days');
$traffic->AddLegend('visits');
$traffic->AddLegend('page views');
$traffic->SetLegendPosition('b');
$traffic->AddDataPointLabel('f',($visits[30]),'000000',0,30,12);
$traffic->AddDataPointLabel('f',($pviews[30]),'000000',1,30,12);
$traffic->AddDataPointLabel('t',(max($visits)).' max','900C0C',0,$vrecord,12);
$traffic->AddDataPointLabel('t',(max($pviews)).' max','900C0C',1,$precord,12);
// Generate chart URL
echo $traffic->GetImg();
?>
Bu ilk örneğimin ardından iki API’nin PHP ile farklı şekillerde kullanımı üzerine araştırma ve çalışmalarımı sürdürmeyi düşünüyorum. Konu ile ilgili yeni bir kod üzerinde çalıştığımda sizlerle burada paylaşacağım. Sizlerinde konuya ilişkin farklı fikir ve çalışmalarınız olduğunda bildirirseniz, burada paylaşabiliriz.
İlgili Makaleler |
İlgili makale bulunamadı.




RSS feed for comments on this post.
