Принцип работы analytics.js

Почти все действия, необходимые для отслеживания с помощью analytics.js, можно выполнять через очередь команд ga(). Из этой статьи вы узнаете, что такое очередь команд, как она работает и как с ее помощью выполнять команды для регистрации действий пользователей.

Очередь команд ga

В теге Google Аналитики определяется глобальная функция ga, называемая очередью команд. Когда совершаются вызовы этой функции, команды не выполняются сразу, а добавляются в очередь. Они начинают выполняться после того, как завершается загрузка библиотеки analytics.js.

В JavaScript функции также являются объектами, поэтому у них могут быть свойства. В теге Google Аналитики свойство q объекта функции ga определено как пустой массив. Если вызов функции ga() совершается перед загрузкой библиотеки analytics.js, то список аргументов, переданных функции ga(), добавляется в конец массива q.

Например, если вы выполните код тега Google Аналитики и сразу после этого выведите содержимое поля ga.q в консоль, вы увидите массив из двух наборов аргументов, уже переданных функции ga():

console.log(ga.q);

// Outputs the following:
// [
//   ['create', 'UA-XXXXX-Y', 'auto'],
//   ['send', 'pageview']
// ]

Когда библиотека analytics.js загружается полностью, она проверяет содержимое массива ga.q и поочередно выполняет команды. После этого функция ga() определяется заново, поэтому все последующие вызовы выполняются сразу.

Таким образом разработчики могут использовать очередь команд ga(), не беспокоясь о статусе загрузки библиотеки analytics.js. Простой и схожий с синхронным интерфейс позволяет абстрагироваться от сложностей асинхронного кода.

Добавление команд в очередь

Все вызовы команды ga() имеют одинаковую сигнатуру. Первый параметр – так называемая "команда", т. е. строка, указывающая определенный метод analytics.js. Дополнительные параметры являются аргументами этого метода.

Метод, на который указывает команда, может быть глобальным методом (например, create), методом объекта ga или методом экземпляра (например, send), применяемым к объекту отслеживания. Если очередь команд ga() получает неопознанную команду, эта команда просто игнорируется. Благодаря этому вызовы функции ga() достаточно безопасны – они почти никогда не выдают ошибки.

Ознакомьтесь с полным списком команд, которые можно выполнить с помощью очереди команд ga().

Параметры команд

Большинство команд analytics.js (и соответствующие методы) принимают параметры в нескольких форматах. Это упрощает передачу часто используемых полей определенным методам.

Рассмотрим, к примеру, следующие две команды в коде тега Google Аналитики:

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

В первой команде метод create принимает поля trackingId, cookieDomain и name, которые при необходимости можно указать в качестве второго, третьего и четвертого параметра соответственно. Команда send принимает необязательный второй параметр hitType.

Все команды в качестве последнего параметра принимают объект fieldsObject, в котором можно указать значения любых полей. Например, две приведенные выше команды также можно сформулировать следующим образом:

ga('create', {
  trackingId: 'UA-XXXXX-Y',
  cookieDomain: 'auto'
});
ga('send', {
  hitType: 'pageview'
});

Ознакомьтесь с полным списком необязательных параметров каждой из команд, выполняемых с помощью очереди команд ga().

Дальнейшие действия

Теперь вы знаете, как выполнять команды в analytics.js и как работает очередь команд. В следующем руководстве рассказывается, как создавать объекты отслеживания.