Это руководство посвящено заданиям – расширенной функции, которая позволяет настраивать проверку, создание и отправку запросов Measurement Protocol с помощью analytics.js.
Обзор
При каждом вызове команды send
скрипт analytics.js выполняет серию заданий по проверке, созданию и отправке запросов Measurement Protocol из браузера пользователя на серверы Google Аналитики. В таблице ниже все эти задания перечислены в порядке их выполнения.
Название задания | Описание |
---|---|
customTask |
По умолчанию не делает ничего. Переопределите, чтобы указать нужное действие. |
previewTask |
Прерывает выполнение запроса, если страница отображается только для того, чтобы создать значок "Топ-сайты" для браузера Safari. |
checkProtocolTask |
Прерывает выполнение запроса, если на странице не используется ни http , ни https . |
validationTask |
Прерывает выполнение запроса, если обязательные поля отсутствуют или недействительны. |
checkStorageTask |
Прерывает выполнение запроса, если в трекере настроено использование файлов cookie, но в браузере пользователя они отключены. |
historyImportTask |
Импортирует информацию из файлов cookie ga.js и urchin.js при внедрении на сайте кода Universal Analytics, чтобы сохранить историю действий посетителя. |
samplerTask |
Производит выборку посетителей в соответствии со значением sampleRate , установленным для этого счетчика. |
buildHitTask |
Создает строку запроса Measurement Protocol и сохраняет ее в поле hitPayload . |
sendHitTask |
Отправляет на серверы Google Аналитики запрос Measurement Protocol из поля hitPayload . |
timingTask |
Автоматически создает маркер времени загрузки сайта на основе значения siteSpeedSampleRate , установленного для этого счетчика. |
displayFeaturesTask |
Отправляет дополнительное обращение, если функции для контекстно-медийной сети включены и предыдущее обращение не отправлено в течение периода ожидания, заданного в файле cookie _gat. |
Каждое из этих заданий реализовано как функция JavaScript, принимающая в качестве входных данных один параметр модели. Модель представляет собой простой объект, который обеспечивает доступ к полям, описанным в Справке по полям analytics.js.
Получить доступ к заданиям или заменить их можно с помощью стандартных методов счетчика get
и set
. С помощью этих методов вы можете заменить стандартные задания собственными функциями или же добавить функции, которые нужно выполнить до или после существующего задания.
Реализация
Далее описывается, как добавить новые функции к существующим заданиям, заменить встроенные функции своими собственными или отключить их.
Переопределение задания
Чтобы переопределить задание, назначьте для него другую функцию с помощью метода set
. Обычно переопределение используется для замены функции (метод stub) при тестировании реализаций analytics.js.
В приведенном ниже примере sendHitTask
заменяется функцией, которая регистрирует полезную нагрузку обращений к консоли.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'sendHitTask', function(model) {
console.log(model.get('hitPayload'));
});
Добавление новых функций к заданиям
Новые функции можно добавить до или после существующего задания. В приведенном ниже примере мы заменяем sendHitTask
собственной функцией, которая сначала вызывает исходную функцию sendHitTask
, отправляющую маркер запроса в google-analytics.com/collection, а затем выполняет код, передающий копию запроса протокола на локальный сервер.
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');
Отмена задания
Для отмены последующих заданий текущее должно выдать исключение. Если задание, выдающее исключение, будет выполнено до sendHitTask
, то запрос протокола передачи статистических данных не будет отправлен на серверы Google Аналитики. В приведенном ниже примере мы отменяем выполнение запроса каждый раз, когда в браузере пользователя обнаруживается файл cookie с названием testing и значением 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');
Отключение задания
Чтобы отменить любую стандартную функцию задания, подставьте вместо нее null.
ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'checkProtocolTask', null); // Disables file protocol checking.
ga('send', 'pageview');