Foros del Web » Programando para Internet » PHP »

Mostrar en mi web mis datos de Google Analytics

Estas en el tema de Mostrar en mi web mis datos de Google Analytics en el foro de PHP en Foros del Web. Hola: Estoy intentando hace un par de días mostrar en mi web los datos de dicha web en Google Analytics. Por el momento solo quiero ...
  #1 (permalink)  
Antiguo 16/10/2013, 15:13
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Mostrar en mi web mis datos de Google Analytics

Hola:

Estoy intentando hace un par de días mostrar en mi web los datos de dicha web en Google Analytics. Por el momento solo quiero mostrar el número total de visitas que ha tenido entre dos fechas concretas.

Para ello hago el siguiente código:

<?php
require_once '../../src/Google_Client.php';
require_once '../../src/contrib/Google_AnalyticsService.php';
session_start();

$client = new Google_Client();
$client->setApplicationName("get_info_usu");

$client->setClientId('xxxx');
$client->setClientSecret('xxxx');
$client->setRedirectUri('xxx');
$client->setDeveloperKey('xxxx');
$service = new Google_AnalyticsService($client);

if (isset($_GET['logout'])) {
unset($_SESSION['token']);
}

if (isset($_GET['code'])) {
$client->authenticate();
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}

if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}

if ($client->getAccessToken()) {
$props = $service->management_webproperties->listManagementWebproperties("~all");
print "<h1>Web Properties</h1><pre>" . print_r($props, true) . "</pre>";

$accounts = $service->management_accounts->listManagementAccounts();
print "<h1>Accounts</h1><pre>" . print_r($accounts, true) . "</pre>";

$segments = $service->management_segments->listManagementSegments();
print "<h1>Segments</h1><pre>" . print_r($segments, true) . "</pre>";

$goals = $service->management_goals->listManagementGoals("~all", "~all", "~all");
print "<h1>Segments</h1><pre>" . print_r($goals, true) . "</pre>";

$_SESSION['token'] = $client->getAccessToken();
} else {
$authUrl = $client->createAuthUrl();
print "<a class='login' href='$authUrl'>Connect Me!</a>";
}
?>

Y me funciona porque me muestra un montón de información pero no la que yo quiero, quiero me muestre sólo el número de visitas totales que ha tenido la web entre dos fechas que yo le pase como parámetro (o que simplemente me muestre todas las visitas totales que ha habido desde el principio hasta el día de hoy).

¿Alguien tiene idea de cómo se hace? Gracias
  #2 (permalink)  
Antiguo 16/10/2013, 15:42
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Mostrar en mi web mis datos de Google Analytics

El proceso siempre es complejo, a no ser de que tengas el id de la cuenta donde obtendrás los resultados debes de hacer lo siguiente:

Código PHP:
Ver original
  1. //despues de autenticarte
  2.     set_time_limit(0);
  3.     //obtenemos todos los perfiles de la cuenta de analytics
  4.     $accounts = $service->management_accounts->listManagementAccounts();
  5.     $profiles = array();
  6.     if(count($accounts['totalResults']) > 0) {
  7.         $items = $accounts['items'];
  8.         foreach($items as $item){
  9.             $id_cuenta = $item['id'];
  10.             $webproperties = $service->management_webproperties->listManagementWebproperties($id_cuenta);
  11.             if($webproperties['totalResults'] >= 1){
  12.                 for($j=0; $j<$webproperties['totalResults']; $j++){
  13.                     $id_perfil = $webproperties['items'][$j]['id'];
  14.                     $perfil = $service->management_profiles->listManagementProfiles($id_cuenta, $id_perfil);
  15.                     if($perfil['totalResults'] >= 1){
  16.                         for($k=0; $k<$perfil['totalResults']; $k++){
  17.                             $id_perfil = $perfil['items'][$k]['id'];
  18.                             $profiles[] = array('id'=>$id_perfil, 'name'=>$perfil['items'][$k]['name']);
  19.                         }
  20.                     }
  21.                 }
  22.             }
  23.         }
  24.     }
  25.     //recorremos cada perfil
  26.     $estadisticas = array();
  27.     $filter = array(
  28.         'dimensions' => 'ga:source,ga:keyword,ga:date,ga:country,ga:city,ga:visitLength',
  29.         'metrics' => 'ga:visitors,ga:newVisits,ga:pageviews,ga:timeOnPage,ga:exits',
  30.         'sort'=>'ga:date',
  31.         'filters' => 'ga:medium==organic',
  32.     );
  33.     $dateStart = date('Y-m-d', strtotime('-1 month'));
  34.     $dateEnd = date('Y-m-d');
  35.     foreach($profiles as $profile){
  36.         $estadisticas[] =  $service->data_ga->get(
  37.                 'ga:' . $profile['id'],
  38.                 $dateStart,
  39.                 $dateEnd,
  40.                 'ga:visits',
  41.                 $filter
  42.             );
  43.     }
  44.     print "<pre>";
  45.         print_r($estadisticas);
  46.     print "</pre>";

Si ya sabes el id del perfil del cual obtendras los datos de google analytics te puedes saltar todo los pasos anteriores y hacer:

Código PHP:
Ver original
  1. $filter = array(
  2.     'dimensions' => 'ga:source,ga:keyword,ga:date,ga:country,ga:city,ga:visitLength',
  3.     'metrics' => 'ga:visitors,ga:newVisits,ga:pageviews,ga:timeOnPage,ga:exits',
  4.     'sort'=>'ga:date',
  5.     'filters' => 'ga:medium==organic',
  6. );
  7. $dateStart = date('Y-m-d', strtotime('-1 month'));
  8. $dateEnd = date('Y-m-d');
  9. $estadisticas =  $service->data_ga->get(
  10.     'ga:' . $profileID,
  11.     $dateStart,
  12.     $dateEnd,
  13.     'ga:visits',
  14.     $filter
  15. );

La variable filter es para sacar resultados especificos, para ver su totalidad debes de mirar la API de Google

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 16/10/2013, 17:09
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 16 años, 10 meses
Puntos: 5
Respuesta: Mostrar en mi web mis datos de Google Analytics

Ya he pasado mi $profileID pero al hacer:

print_r($estadisticas);

Me salen tropecientosmil datos ¿Cómo puedo obtener solo el del número total de visitas que ha tenido esa web?

Última edición por schattenburg; 16/10/2013 a las 17:21
  #4 (permalink)  
Antiguo 16/10/2013, 18:46
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Mostrar en mi web mis datos de Google Analytics

Has mirado lo que te resulta??

Si te puse los ejemplos con <pre> es justamente para que te sea mas fácil mirar que te retorna las estadísticas, ya que el trabajo mas duro esta hecho, así que te toca ver tu mismo la estructura del array y veras que encuentras los datos que pides

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: analytics, fecha, google
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:01.