Hello Analytics API: inicio rápido en PHP para las cuentas de servicio

Este tutorial te guiará a través de los pasos necesarios para acceder a una cuenta de Google Analytics, consultar las API de Google Analytics, gestionar las respuestas de la API y enviar los resultados. Para ello, se usan la API de informes centrales v3.0, la API de administración v3.0 y OAuth 2.0.

Paso 1: habilitar la API de Analytics

Para empezar a usar la API de Google Analytics, primero debes utilizar la herramienta de configuración, que te guiará por los pasos necesarios para crear un proyecto en la consola de la API de Google, habilitar la API y crear las credenciales.

Crear un ID de cliente

  1. Abre la página Service accounts (Cuentas de servicio). Si se te solicita, selecciona un proyecto.
  2. Haz clic en Create service account (Crear cuenta de servicio).
  3. En la ventana Create service account (Crear cuenta de servicio), escribe el nombre de la cuenta de servicio y selecciona Furnish a new private key (Suministrar una nueva clave privada). Si quieres conceder autoridad en todo el dominio de G Suite a la cuenta de servicio, selecciona también Enable G Suite Domain-wide Delegation (Habilitar delegación de todo el dominio de G Suite). A continuación, haz clic en Create (Crear).

El nuevo par de claves pública/privada se genera y se descarga en el equipo, lo que sirve de copia única de esta clave. Eres responsable de almacenarla de forma segura.

Agregar la cuenta de servicio a la cuenta de Google Analytics

La cuenta de servicio recién creada tendrá la dirección de correo electrónico &ltprojectId&gt-&ltuniqueId&gt@developer.gserviceaccount.com. Utiliza esta dirección para agregar un usuario a la cuenta de Google Analytics a la que quieras acceder a través de la API. Para este tutorial solo se necesitan los permisos Leer y analizar.

Paso 2: instalar la biblioteca de cliente de Google

Para obtener la biblioteca de cliente de las API de Google para PHP, descarga la versión o utiliza la herramienta Composer:

composer require google/apiclient:^2.0

Paso 3: configurar el código de muestra

Deberás crear un archivo llamado HelloAnalytics.php, que contendrá el código de muestra siguiente.

  1. Copia o descarga el siguiente código fuente en HelloAnalytics.php.
  2. Coloca el archivo service-account-credentials.json que has descargado en el mismo directorio que el código de muestra.

HelloAnalytics.php

<?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

$analytics = initializeAnalytics();
$profile = getFirstProfileId($analytics);
$results = getResults($analytics, $profile);
printResults($results);

function initializeAnalytics()
{
  // Creates and returns the Analytics Reporting service object.

  // Use the developers console and download your service account
  // credentials in JSON format. Place them in this directory or
  // change the key file location if necessary.
  $KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json';

  // Create and configure a new client object.
  $client = new Google_Client();
  $client->setApplicationName("Hello Analytics Reporting");
  $client->setAuthConfig($KEY_FILE_LOCATION);
  $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
  $analytics = new Google_Service_Analytics($client);

  return $analytics;
}

function getFirstProfileId($analytics) {
  // Get the user's first view (profile) ID.

  // Get the list of accounts for the authorized user.
  $accounts = $analytics->management_accounts->listManagementAccounts();

  if (count($accounts->getItems()) > 0) {
    $items = $accounts->getItems();
    $firstAccountId = $items[0]->getId();

    // Get the list of properties for the authorized user.
    $properties = $analytics->management_webproperties
        ->listManagementWebproperties($firstAccountId);

    if (count($properties->getItems()) > 0) {
      $items = $properties->getItems();
      $firstPropertyId = $items[0]->getId();

      // Get the list of views (profiles) for the authorized user.
      $profiles = $analytics->management_profiles
          ->listManagementProfiles($firstAccountId, $firstPropertyId);

      if (count($profiles->getItems()) > 0) {
        $items = $profiles->getItems();

        // Return the first view (profile) ID.
        return $items[0]->getId();

      } else {
        throw new Exception('No views (profiles) found for this user.');
      }
    } else {
      throw new Exception('No properties found for this user.');
    }
  } else {
    throw new Exception('No accounts found for this user.');
  }
}

function getResults($analytics, $profileId) {
  // Calls the Core Reporting API and queries for the number of sessions
  // for the last seven days.
   return $analytics->data_ga->get(
       'ga:' . $profileId,
       '7daysAgo',
       'today',
       'ga:sessions');
}

function printResults($results) {
  // Parses the response from the Core Reporting API and prints
  // the profile name and total sessions.
  if (count($results->getRows()) > 0) {

    // Get the profile name.
    $profileName = $results->getProfileInfo()->getProfileName();

    // Get the entry for the first entry in the first row.
    $rows = $results->getRows();
    $sessions = $rows[0][0];

    // Print the results.
    print "First view (profile) found: $profileName\n";
    print "Total sessions: $sessions\n";
  } else {
    print "No results found.\n";
  }
}

Paso 4: ejecutar la muestra

Después de haber habilitado la API de Analytics, de haber instalado la biblioteca de cliente para PHP de las API de Google y de haber configurado el código fuente, la muestra estará lista para ejecutarse.

Ejecuta la muestra con el siguiente comando:

php HelloAnalytics.php

Cuando finalices estos pasos, la muestra envía el nombre de la primera vista (perfil) de Google Analytics del usuario autorizado y el número de sesiones de los últimos siete días.

Con el objeto de servicio de Analytics autorizado ya puedes ejecutar cualquiera de las muestras de código que se encuentran en los documentos de referencia de la API de administración. Por ejemplo, podrías intentar cambiar el código para usar el método accountSummaries.list.