Tareas

En esta guía, se describen las tareas, una función avanzada que se utiliza para personalizar la forma en que analytics.js valida, construye y envía solicitudes del Protocolo de medición.

Descripción general

Cada vez que se llama al comando send, analytics.js ejecuta una secuencia de tareas para validar, crear y enviar una solicitud de protocolo de medición desde el navegador del usuario a Google Analytics. En la siguiente tabla, se describe cada una de estas tareas, en el orden en que se ejecutan:

Nombre de la tarea Descripción
customTask De forma predeterminada, esta tarea no hace nada. Anótalo para proporcionar un comportamiento personalizado.
previewTask Anula la solicitud si la página solo se está renderizando para generar una miniatura de "Sitios principales" para Safari.
checkProtocolTask Anula la solicitud si el protocolo de la página no es http ni https.
validationTask Anula la solicitud si faltan campos obligatorios o no son válidos.
checkStorageTask Anula la solicitud si la herramienta de seguimiento está configurada para usar cookies, pero el navegador del usuario tiene las cookies inhabilitadas.
historyImportTask Importa información de las cookies ga.js y urchin.js para conservar el historial de los visitantes cuando se migra un sitio a Universal Analytics.
samplerTask Muestra a los visitantes en función de la configuración sampleRate de esta herramienta de seguimiento.
buildHitTask Compila una string de solicitud del Protocolo de medición y la almacena en el campo hitPayload.
sendHitTask Transmite la solicitud del Protocolo de medición almacenada en el campo hitPayload a los servidores de Google Analytics.
timingTask Genera automáticamente un hito de tiempo de velocidad del sitio en función del parámetro de configuración siteSpeedSampleRate de este rastreador.
displayFeaturesTask Envía un hit adicional si las funciones de visualización están habilitadas y no se envió un hit anterior dentro del tiempo de espera que estableció la cookie de funciones publicitarias (_gat).

Cada una de estas tareas se implementa como una función de JavaScript que toma un solo parámetro del modelo como entrada. El modelo es un objeto simple que proporciona acceso a cualquiera de los campos definidos en la Referencia de campos de Analytics.js.

Se puede acceder a las tareas o reemplazarlas con los métodos estándar de seguimiento get y set. Con estos métodos, puedes reemplazar tareas con tus propias funciones personalizadas o aumentar la funcionalidad existente encadenando tus funciones personalizadas para ejecutarlas antes o después de una tarea existente.

Implementación

En esta sección, se describe cómo agregar nuevas funcionalidades a las tareas existentes, reemplazar las funciones integradas de las tareas con tu propio código personalizado o inhabilitar una función de tarea por completo.

Cómo anular una tarea

Para anular una tarea, puedes set su valor a una función que haga algo diferente. Un motivo común para anular tareas es usar la funcionalidad stub cuando pruebas tus implementaciones de analytics.js.

El siguiente código reemplaza el sendHitTask por una función que registra la carga útil de hit en la consola:

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
  console.log(model.get('hitPayload'));
});

Cómo agregar elementos a una tarea

Para insertar funcionalidades nuevas, puedes encadenar tu función de tarea personalizada para que se ejecute antes o después de una tarea existente. En el siguiente ejemplo, sendHitTask se reemplaza por una función de tarea personalizada que primero llama a la función sendHitTask original para enviar el píxel contador de solicitudes normal a google-analytics.com/collection y, luego, ejecuta el código personalizado para enviar una copia de la solicitud del protocolo de medición a un servidor local.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {

  // Grab a reference to the default sendHitTask function.
  var originalSendHitTask = tracker.get('sendHitTask');

  // Modifies sendHitTask to send a copy of the request to a local server after
  // sending the normal request to www.google-analytics.com/collect.
  tracker.set('sendHitTask', function(model) {
    originalSendHitTask(model);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/localhits', true);
    xhr.send(model.get('hitPayload'));
  });
});

ga('send', 'pageview');

Anula el procesamiento de tareas

Una tarea puede anular el procesamiento de tareas posteriores arrojando una excepción. Si la tarea que arroja la excepción se ejecuta antes de sendHitTask, esto impide que la solicitud del Protocolo de medición se envíe a los servidores de Google Analytics. En el siguiente ejemplo, anulamos la solicitud cada vez que el navegador del usuario contiene una cookie denominada 'testing' con el valor 'true'.

ga('create', 'UA-XXXXX-Y', 'auto');

ga(function(tracker) {
  var originalBuildHitTask = tracker.get('buildHitTask');
  tracker.set('buildHitTask', function(model) {
    if (document.cookie.match(/testing=true/)) {
      throw 'Aborted tracking for test user.';
    }
    originalBuildHitTask(model);
  });
});

ga('send', 'pageview');

Cómo inhabilitar una tarea

Para inhabilitar cualquiera de las funciones de tareas integradas, reemplázala por valor nulo.

ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');