Я пытаюсь получить экспериментальные данные Google Optimize в JavaScript, следуя этим инструкциям . Но я не получаю обратного вызова и не вижу, что что-то происходит в отладчике.
Связанные инструкции используют способ gtag для настройки GA, поэтому я настроил gtag в соответствии с https://developers.google.com/gtagjs/devguide/snippet, и настроил Оптимизацию в соответствии с https://support.google.com/optimize/answer/7513085?hl=en с помощью Метод 1: Установка Оптимизируйте с помощью глобальный тег сайта (gtag.js) .
Я хочу показать точный код, который я использую, но так как я делаю это в React с рендерингом Next.js на стороне сервера, оригинальный код имеет некоторые дополнительные возможности по сравнению с обычным HTML + JS. Источник выглядит так:
require("dotenv").config()
import React from "react"
import Document, { Head, Main, NextScript } from "next/document"
export default class extends Document {
render() {
return (
<html>
<Head>
<script async src={`https://www.googletagmanager.com/gtag/js?id=${process.env.GA_TRACKING_ID}`}/>
<script
dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', '${process.env.GA_TRACKING_ID}', { optimize_id: '${process.env.OPTIMIZE_ID}'});
console.log('GA setup done: ${process.env.GA_TRACKING_ID} + ${process.env.OPTIMIZE_ID}');
gtag('event', 'optimize.callback', {
name: '${process.env.EXPERIMENT_ID}',
callback: o => console.log(o)
});
`
}}
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</html>
)
}
}
Этот код создает страницу результатов, которая запускает Google Analytics и отслеживает просмотр страницы точно так же, как и должен, а когда я выполняю «ЗАПУСК ДИАГНОСТИКИ» в консоли Google Optimize, он открывает страницу, проверяет JavaScript и сообщает:
Оптимизировать правильно установлен
При проверке установки Optimize на этой странице не было обнаружено серьезных проблем.
Я также установил плагин Google Chrome Tag Assistant и сообщает, что тег Google Optimize установлен правильно.
Я вижу следующие звонки в сетевом журнале:
https://www.googletagmanager.com/gtag/js?id=UA-xxxxxx
https://www.google-analytics.com/analytics.js
https://www.google-analytics.com/gtm/js?id=GTM-xxxxxx&t=gtag_UA_xxxx&cid=nnn.nnn
Я также проверил, что глобальная переменная google_optimize
создана, и у нее есть метод .get()
. Если я посмотрю (на панели сети отладчика) ответ http на запрос https://www.google-analytics.com/gtm/js?...
, я действительно смогу увидеть данные экспериментов Google Optimize с правильным экспериментом, встроенным в код.
Так что все выглядит хорошо, за исключением того факта, что событие optimize.callback
кажется полным запретом. Это ничего не делает вообще. И я не знаю, как еще получить доступ к данным эксперимента, которые я вижу в ответе http в отладчике.