Принципы работы 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 и как работает очередь команд. В следующем руководстве рассказывается, как создавать объекты отслеживания.