Неполадка при получении имени Google Analytics Tracker с использованием Javascript - PullRequest
0 голосов
/ 07 февраля 2020

Я использую Google Tag Manager для реализации Google Analytics. Таким образом, имена трекеров, инициированные на моем сайте, не всегда совпадают, например. gtm2, gtm3.

Общая цель состоит в том, чтобы иметь возможность отправлять данные в мой пользовательский метри c следующим образом:

ga( 'gtm2.set', 'metric2', 'custom metric data');

Я не могу понять почему этот код не будет работать:

var yone = (ga.getAll()[1].get("name"));
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');

Ошибка в консоли Javascript заключается в том, что «VM3324: 1 Uncaught TypeError: ga.getAll не является функцией». Я не уверен, почему это показывает, поскольку, когда я делаю console.log(ga.getAll()[1].get("name"));, правильное имя трекера появляется в журнале консоли ie. gtm2.

EDIT Я попытался ввести функцию обратного вызова, как упоминалось @balexandre, поэтому мой код стал таким:

var yone = ga(function() {
ga.getAll()[1].get("name")});
var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');

В этом случае консоль теперь показывает другое сообщение об ошибке «Uncaught TypeError: Невозможно прочитать свойство concat of undefined».

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

это обратный вызов, поэтому вы не можете просто позвонить своему коду и надеяться, что все будет работать, это не будет!

вы пробовали это

var yone = ga(function() {
  ga.getAll()[1].get("name")
});

var ytwo = ".set";
var ythree = yone.concat(ytwo);
ga( ythree, 'metric2', 'custom metric data');

, но когда вы в строке var ytwo у вас еще ничего нет в yone, вызов еще не сработал ... следовательно, это обратный вызов (будет выполнять код только при загрузке скрипта), вы не знаете, будет ли он 1 мс или 10 сек c ...

так что вы должны попробовать:

ga(function() {
  // debugger;
  var yone = ga.getAll()[1].get("name");
  var ytwo = ".set";
  var ythree = yone.concat(ytwo);
  ga( ythree, 'metric2', 'custom metric data');
});

и, если хотите, удалить комментарий и использовать отладчик браузера, чтобы проверить все существующие переменные и выполнить код внутри обратного вызова ...

0 голосов
/ 07 февраля 2020

Вы пробовали с индексом 0 вместо 1? Например:

ga.getAll()[0].get("name");

Результат, если вы не используете GTM, может быть t0 , а с GTM может быть гтм xx .

...