/ Published in: PHP
                    
                                        
Example of using http://code.google.com/p/gapi-google-analytics-php-interface/ to graph google analytics data.
                
                            
                                Expand |
                                Embed | Plain Text
                            
                        
                        Copy this code and paste it in your HTML
<?php
// include the GAPI class from http://code.google.com/p/gapi-google-analytics-php-interface/
require_once 'gapi.class.php';
// login details for the account that has access to analytics reports.
// use our caching function above to get some results in a nice array
// change 123456789 to your google analytics id.
// output the image:
output_image($data);
function get_analytics_data(
$profile_id,
$sort=null,
$start_date=null,
$end_date=null
){
$return = false;
// check if the cache item exists.
$temp_folder = '/tmp/ga/';
$filename = $temp_folder.$cache_id;
}
}
if(!$return){
// no cache item found, so we grab it via gapi class.
$ga = new gapi(ga_web_email,ga_web_pass);
$ga->requestReportData($profile_id,$dimensions,$metrics,$sort,null,$start_date,$end_date,null,100);
foreach($ga->getResults() as $result){
foreach($dimensions as $d){
$data[$d] = (string)$result;
foreach($metrics as $m){
$data[$m] = $result->{'get'.$m}();
}
}
$return['data'][] = $data;
}
$return['total'] = $ga->getTotalResults();
foreach($metrics as $m){
$return[$m] = $ga->{'get'.$m}();
}
$return['timestamp'] = $ga->getUpdated();
}
// save cache item.
return $return;
}
function output_image($data){
$max_y = 500;
$width = 640;
$height = 200;
// work out the width of 1 day
$attr['chxl'] = '1:'; // the data point label text.
$attr['chxp'] = '1'; // the data point label positions.
$attr['chxr'] = '0,0,'.$max_y.'|1,0,'.$days; // the min/max data range to graph over the space of the image.
$attr['chxt'] = 'y,x'; // ?
$attr['chs'] = $width.'x'.$height; // width x height of the image.
$attr['cht'] = 'lc'; // type of graph
$attr['chco'] = '3D7930,FF9900'; // colors of the graph lines.
$attr['chds'] = '0,'.$max_y.',0,'.$max_y.''; // data range of each data set (0 to 500 each)
$attr['chdl'] = 'Visits|New Visits'; // labels for each data set
$attr['chg'] = (100/$days) . ',' . ((100/$max_y)*100) . ',4,1,-'.($half_day_width*100).',0'; // (vert,horiz) how many step lines.
$attr['chls'] = '2,4,0|1'; // ?something about size of lines maybe?
$attr['chtt'] = 'Visits vs New Visits over past '.$data['total'].' days.'; // graph label at the top.
// graph stripes. every saturday and sunday ?
// work out what day the graph starts on.
// how big is the first bar?
// highlight white from first bar to first Saturday (6)
$attr['chf'] = 'c,ls,0';
$number_of_days = 6 - $start_day;
if($number_of_days>0){
// we start with a white bar, because we're starting graph during the week.
$color='FFFFFF';
}else{
// we're starting graph on a saturday or sunday.
$color='EFEFEF';
// then we do 5 days white.
}
// loop over for the remaining days, every 7 days different colour.
for($x=0;$x<=$days;$x+=7){
// we're doing 2 days dark for weekend.
// we're doing 5 days white.
}
$p = $start_day;
$x=0;
$points1 = $points2 = '';
foreach($data['data'] as $d){
if($p%7==1){
// every monday put a date.
$attr['chxp'] .= ',' . $x;
}
$points1 .= $d['visits'].',';
$points2 .= $d['newVisits'].',';
$x++;
$p++;
}
?>
<img src="http://chart.apis.google.com/chart?<?php foreach($attr as $k=>$v) echo $k .'='.urlencode($v).'&
';?>" width="<?php echo $width;?>"
height="<?php echo $height;?>" alt="<?php echo $attr['chtt'];?>" />
<?php
}
?>
URL: http://dtbaker.com.au/random-bits/google-analytics-php-api.html
Comments
 Subscribe to comments
                    Subscribe to comments
                
                