ดึงข้อมูลจาก Google Analytic มาแสดงด้วย PHP

เนื่องจากบางครั้งการทำเว็บไซต์ให้ลูกค้าและใช้ Google Analytics เป็นตัวเก็บข้อมูล แต่ลูกค้าอาจจะไม่ค่อยถนัดในการดูข้อมูลโดยเข้าหน้าเว็บ GA โดยตรง เนื่องจากตัวเว็บแม้จะดูข้อมูลได้อย่างละเอียด แต่ก็ค่อนข้างซับซ้อน เพื่อให้ลูกค้าสามารถใช้งานได้ง่าย จึงจะเอาสถิติจาก GA มาไว้ในหน้าแรกของ backoffice จึงเขียน PHP class เพื่อติดต่อกับ Google Analytic Data Export API และก็ใช้ Google Chart มาช่วยในการแสดงผล

สรุปเขียน PHP Class โดยใช้ cURL เพื่อติดต่อกับ Google โดย

  • การ auth นั้นจะทำโดย post ไปและหากลอคอินผ่านจะได้ token มาเก็บไว้
  • จากนั้นการดึงข้อมูลรายงานจะใช้ get โดยส่ง url ที่มีค่าที่ต้องการไป และส่ง token ไปด้วย
  • รูปแบบของรายงานที่ Google ส่งกลับมานั้นจะเป็น XML ก็ใช้ DOMDocument ค่อยๆ parse ค่าออกมา
  • นำค่ามาแสดง โดยหากต้องการใช้กราฟก็จะเรียกใช้ Google Graph

วิธีนำ GAAPI ไปใช้งาน

ดาวน์โหลดโค้ทตัวเต็มได้ที่นี่ -> GAAPI

สร้างและเรียกใช้คลาส
โดยการ include ไฟล์ class เข้ามา และสร้างโดยต้องใส่ username, password และ site id(ดูได้จากใน google analytic account สังเกต id=xxxxxxxx ใน url)

include_once('gaapi.class.php');
$ga=new gaApi('google username','google password','ga:site id');
//e.g. ('[email protected]','myPassword','ga:1234567');

เรียกข้อมูลรายงาน
ในส่วนนี้ต้องเข้าใจเรื่อง Dimension และ Metric ของ Google Analytic Data Extract API ก่อน โดยหลักๆมันคือการเอา Dimension และ Metric มาผสมกันทำให้ได้ตารางรายงานออกมา โดยให้เรียกใช้ผ่าน method genReport(array) เช่น

$params = array ('metrics' 		=> 'ga:visits',
				'dimensions'	=> 'ga:source',
				'start-date' 	=> '2010-01-01',
				'end-date' 		=> '2010-02-09',
				'max-results' 	=> '5',
				'filter'		=> 'ga:source != (direct)',
				'sort'			=> '-ga:visits');
$result=$ga->genReport($params);
print_r($result);

สิ่งที่จะได้ออกมาก็จะเป็นชุดของ array ดังตัวอย่าง

Array
(
    [0] => Array
        (
            [ga:source] => google
            [ga:visits] => 5029
        )
    [1] => Array
        (
            [ga:source] => xxxxxxx.com
            [ga:visits] => 162
        )
    [2] => Array
        (
            [ga:source] => search
            [ga:visits] => 49
        )
)

นอกจากนี้ในคลาสที่เขียนไว้ก็มีฟังก์ชั่นสำหรับเรียกข้อมูลมาตรฐานบางส่วนแล้ว ดังนี้

$now=date("Y-m-d");
$lastmonth=date('Y-m-d', strtotime('-30 days'));

//Summery: visitors, unique visit, pageview, time on site, new visits, bounce rates
$summery=$ga->getSummery($lastmonth,$now);

//All time summery: visitors, page views
$allTimeSummery=$ga->getAllTimeSummery();

//Last 10 days visitors (for graph)
$visits=$ga->getVisits($lastmonth,$now,10);

//Top 10 search engine keywords
$topKeywords=$ga->getTopKeyword($lastmonth,$now,10);

//Top 10 visitor countries
$topCountries=$ga->getTopCountry($lastmonth,$now,10);

//Top 10 page views
$topPages=$ga->getTopPage($lastmonth,$now,10);

//Top 10 referrer websites
$topReferrer=$ga->getTopReferrer($lastmonth,$now,10);

//Top 10 visitor browsers
$topBrowsers=$ga->getTopBrowser($lastmonth,$now,10);

//Top 10 visitor operating systems
$topOs=$ga->getTopOs($lastmonth,$now,10);

โดยผลลัพท์ของแต่ละ method ก็จะออกมาเป็นชุดของ array มี key เป็นชื่อ dimension และ metric ตามตัวอย่างข้างต้น

ดาวน์โหลดโค้ทตัวเต็มได้ที่นี่ -> Github GAAPI