API de Google Analytics: obtenga datos específicos utilizando PHP
-
27-10-2019 - |
Pregunta
He logrado obtener algunos datos usando:
$ga->requestReportData(44030755,array('pagePath'),array('pageviews','uniquePageviews'));
e iterando sobre él usando foreach.
Esto es lo que se devuelve:
object(gapiReportEntry)[7]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '//?@faktanyaadalah=' (length=19)
object(gapiReportEntry)[12]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '//?facebookwww-static/assets/images/highlight.png=' (length=50)
object(gapiReportEntry)[8]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '//?faktanyaadalah=&fb_xd_fragment=' (length=34)
object(gapiReportEntry)[13]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '//?faktanyadalah=' (length=17)
object(gapiReportEntry)[15]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '//?uniqpost=&fb_xd_fragment=' (length=28)
object(gapiReportEntry)[14]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/adamramadhan?offset=0' (length=22)
object(gapiReportEntry)[16]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/adamramadhan?offset=2' (length=22)
object(gapiReportEntry)[18]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/adamramadhan?offset=3' (length=22)
object(gapiReportEntry)[19]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/adamramadhan?offset=4' (length=22)
object(gapiReportEntry)[20]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/admin/blog?e=2' (length=15)
object(gapiReportEntry)[21]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/admin/blog?e=4' (length=15)
object(gapiReportEntry)[22]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/admin/blog?e=5' (length=15)
object(gapiReportEntry)[23]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/blog?id=23' (length=11)
object(gapiReportEntry)[24]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/gembelabis' (length=11)
object(gapiReportEntry)[25]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/messages?id=7' (length=14)
object(gapiReportEntry)[26]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/messages?id=9' (length=14)
object(gapiReportEntry)[27]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/messages?mid=15' (length=16)
object(gapiReportEntry)[28]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/messages?mid=17' (length=16)
object(gapiReportEntry)[29]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/messages?mid=18' (length=16)
object(gapiReportEntry)[30]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/product?id=16' (length=14)
object(gapiReportEntry)[31]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/product?id=18' (length=14)
object(gapiReportEntry)[32]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/product?id=2' (length=13)
object(gapiReportEntry)[33]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/product?id=44' (length=14)
object(gapiReportEntry)[34]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/products?tag=hosting' (length=21)
object(gapiReportEntry)[35]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/verify/adamramadhan' (length=20)
object(gapiReportEntry)[36]
private 'metrics' =>
array
'pageviews' => int 1
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/verify/uniqpost' (length=16)
object(gapiReportEntry)[37]
private 'metrics' =>
array
'pageviews' => int 2
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '//?facebookwww-static/assets/images/highlight-1.png=' (length=52)
object(gapiReportEntry)[38]
private 'metrics' =>
array
'pageviews' => int 2
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/LVUStore' (length=9)
object(gapiReportEntry)[39]
private 'metrics' =>
array
'pageviews' => int 2
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/adamramadhan?offset=1' (length=22)
object(gapiReportEntry)[40]
private 'metrics' =>
array
'pageviews' => int 2
'uniquePageviews' => int 1
private 'dimensions' =>
array
'pagePath' => string '/product?id=22' (length=14)
¿Cómo puedo obtener vistas de página y uniqpageViews solo usando una ruta de página personalizada?? algo como
$eachdata->path('/LVUstore')
; Devuelve una matriz PageView 2, UniqPageView 1, etc.¿Hay alguna mejor práctica? por ejemplo, almacenando en caché el objeto, etc.
Gracias,
Solución
Creo que lo que estás buscando son filtros. Puedes usar el filter
parámetro para limitar su conjunto de resultados. Google también dice que esta es una buena manera de lidiar con grandes conjuntos de datos. Por lo tanto, esencialmente puede enganchar la ruta específica que desea con un filtro, o puede tomarlos todos y organizarlos en consecuencia.
$path = "/path-goes-here";
/*
* if you only want to get one path, use a filter:
*/
$filter = "pagePath == '$path'";
$ga->requestReportData(ga_profile_id,array('pagePath'),
array('pageviews','uniquePageviews'),'',$filter);
$result = $ga->getResults();
if (count($result)) {
$result = array('pageviews' => $result[0]->getPageviews(),
'unique_pageviews' => $result[0]->getUniquePageviews()
);
}
print_r($result);
/*
* of if you want to get them all and then grab one specific:
*/
$ga->requestReportData(ga_profile_id,array('pagePath'),array('pageviews','uniquePageviews'));
$results = array();
foreach($ga->getResults() as $result) {
$results[$result->getPagePath()] = array('pageviews' => $result->getPageviews(),
'unique_pageviews' => $result->getUniquePageviews() );
}
if(array_key_exists($path,$results)) {
print_r($results[$path]);
}
Otros consejos
Esto devuelve una matriz formada como desee (si lo había entendido)
function cleanTheData($what){
$ret = array();
foreach($what as $one){
$ret[$uno->dimensions['pagePath']] = array(
'pageviews' => $uno->metrics['pageviews'],
'uniquePageviews' => $uno->metrics['uniquePageviews']
);
}
return $ret;
}
print_r(cleanTheData($initialArray))