Tareas

En esta guía se describe la función avanzada de tareas, que permite personalizar cómo analytics.js valida, construye y envía solicitudes de Protocolo de medición.

Descripción general

Cada vez que se realiza una llamada al comando send, analytics.js ejecuta una secuencia de tareas para validar, construir 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
previewTask Anula la solicitud si la página solo se muestra para generar una miniatura de los mejores sitios web en Safari.
checkProtocolTask Anula la solicitud si el protocolo de la página no es http o https.
validationTask Anula la solicitud si faltan campos obligatorios o no son válidos.
checkStorageTask Anula la solicitud si el objeto de seguimiento se configura para usar cookies, pero el navegador del usuario tiene las cookies inhabilitadas.
historyImportTask Importa información de las cookies de ga.js y urchin.js para conservar el historial del visitante cuando un sitio web migra a Universal Analytics.
samplerTask Muestrea visitantes según la configuración de sampleRate del objeto de seguimiento en cuestión.
buildHitTask Crea una cadena de solicitud de protocolo de medición y la almacena en el campo hitPayload.
sendHitTask Envía la solicitud de protocolo de medición almacenada en el campo hitPayload a los servidores de Google Analytics.
timingTask Genera automáticamente un hit de tiempos de velocidad de sitio web basado en la configuración de siteSpeedSampleRate en este rastreador.
displayFeaturesTask Envía un hit adicional si las funciones de display están habilitadas y no se ha enviado un hit anterior durante el periodo de tiempo establecido por la cookie de la función de display (_gat).

Cada una de estas tareas se implementa como una función de JavaScript que usa un parámetro de modelo único como dato de entrada. El modelo es un objeto simple que ofrece acceso a cualquier campo definido en la referencia de campos de Analytics.js.

El objeto de seguimiento estándar [get](/analytics/devguides/collection/analyticsjs/method-reference#get) y los métodos [set](/analytics/devguides/collection/analyticsjs/method-reference#set) permiten acceder a las tareas o sustituirlas por otras. Con estos métodos, puedes sustituir tareas con tus propias funciones personalizadas o ampliar la funcionalidad existente encadenando funciones personalizadas para que se ejecuten antes o después de una tarea existente.

Implementación

En esta sección se describe cómo agregar nuevas funciones a tareas, cómo sustituir las funciones integradas en las tareas con código personalizado y cómo inhabilitar una función de tarea completamente.

Sustituir una tarea

Para sustituir una tarea, puedes configurar su valor (set) en una función que haga algo diferente. Esto se suele hacer para sustituir una funcionalidad por otra al probar las implementaciones de analytics.js.

En el código siguiente se sustituye sendHitTask por una función que registra la carga útil del hit en la consola:

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

Agregar funciones a una tarea

Para insertar nuevas funciones, puedes encadenar la función de tarea personalizada para que se ejecute antes o después de una tarea. En el ejemplo que se muestra a continuación, sendHitTask se sustituye por una función de tarea personalizada que llama a la función sendHitTask original en primer lugar para enviar el beacon de solicitud normal a google-analytics.com/collection. A continuación, se 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');

Cómo anular el procesamiento de una tarea

Una tarea puede anular el procesamiento de las tareas posteriores arrojando una excepción. Si la tarea arroja una excepción, se ejecuta antes de sendHitTask. Esto evita que la solicitud del protocolo de medición se envíe a los servidores de Google Analytics. En el siguiente ejemplo, se anula la solicitud cada vez que el navegador del usuario contenga una cookie llamada "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');

Inhabilitar una tarea

Para inhabilitar cualquiera de las funciones integradas en las tareas, solo tienes que reemplazarla por "null".

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