Я пытаюсь использовать Google Optimize с Google Analytics, установленным gtag.js, и получаю ошибки в некоторых частях пользовательского интерфейса Optimize, но не в других.
Вот что я сделал:
- Установил Google Analytics, следуя инструкциям «Настройте отслеживание Analytics с помощью gtag.js» (и подтвердил, что он работает с помощью предварительного просмотра в реальном времени).
- Настройте Google Analytics, следуя инструкциям «Развернуть Оптимизацию с помощью глобального тега сайта (gtag.js)»
- Добавлен фрагмент кода, скрывающий страницу.
Когда я настраиваю эксперимент с использованием расширения Chrome, Optimize работает так, как ожидает Google. Обратите внимание, что на снимке экрана ниже нет числа, показанного значком восклицательного знака (оно появится, если я удалю параметр Optimize code), и щелчок по нему говорит: «Проблем не обнаружено». (Кроме того, на значке расширения Chrome нет символа ошибки.)
Однако, если я затем просматриваю оригинал или вариант (щелкнув значок «экран» в Оптимизации), я получаю предупреждение javascript, в котором говорится:
Фрагмент Google Optimize для контейнера с идентификатором GTM-abcdef неправильно установлен на этой странице. Чтобы предварительно просмотреть варианты для этого эксперимента, убедитесь, что фрагмент кода Google Оптимизации установлен на всех страницах, которые вы хотите протестировать.
(Я заменил свой фактический идентификатор контейнера на "abcdef" выше.)
И значок расширения Chrome также показывает ошибку и аналогичное сообщение при нажатии (здесь я закрасил название эксперимента):
Вот мой раздел HTML <head>
(с удаленными идентификаторами):
Я сравнил сценарий из этого примера с примером в «Развернуть оптимизацию с использованием глобального тега сайта ( gtag.js) ", и они выглядят идентичными, за исключением того, что мой код содержит настоящие идентификаторы:
<head>
<meta charset="UTF-8">
<!-- Page hiding snippet (recommended) -->
<style>.async-hide { opacity: 0 !important} </style>
<script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
(a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
})(window,document.documentElement,'async-hide','dataLayer',4000,
{'GTM-zyxzyx':true});</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-abcdef"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-abcdef', { 'optimize_id': 'GTM-zyxzyx'});
</script>
<title></title>
</head>
Я пробовал это против сайта, работающего локально (на веб-сервере Flask, порт 5000), и против сайта, развернутого на Heroku, и поведение одинаково в обоих случаях.
Я также пытался удалить код фрагмента, скрывающий страницу, но это не помогло.
Я также пробовал провести эксперимент, но всегда видел исходный вариант, даже когда настраивал альтернативный на 100% трафика, поэтому он там не работает. (Я пробовал это только против локального сайта, не пробовал против экземпляра Heroku.)
Стоит отметить, что в коде GA есть такая строчка:
function gtag(){dataLayer.push(arguments);}
Я видел это в Интернете в такой форме и с точкой с запятой в конце:
function gtag(){dataLayer.push(arguments)};
Я пробовал оба без какого-либо эффекта.
Что я здесь делаю не так?