Как я могу извлечь значения gtag('consent')?

Следуя инструкциям Google я устанавливаю согласие на сайте, над которым работаю. Я могу установить gtag() согласие через GTM и все остальное. Мне было интересно: как мне вернуть значения, которые пользователь установил gtag('consent')? (например, default|update и ad_user_data,functionality_storage и т. д.)

В документации Google объясняется, что в gtag() есть опция gtag('get') , но gtag('consent') кажется совершенно другим вариантом, с которым gtag('get') не работает, и я не могу получить значения набор.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
1
361
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я не эксперт в этом вопросе, но нашел кое-что, что мне помогло:

dataLayer

Это переменная, которая включает в себя все внутренние данные gtag. Итак, что вы можете сделать:

Object.values(dataLayer).filter(a=> typeof a === 'object' && a?.[0] === 'consent')

Должен вернуть все согласия. Это должно вернуть все объекты согласия из dataLayer относительно согласия.

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

//merges an array of objects into a single object, where properties from later objects overwrite those from earlier ones
function mergeObjects(array) {
return array.reduce((acc, obj) => ({ ...acc, ...obj }), {});
}

const consentHistory = Object.values(dataLayer).filter(a=> typeof a === 'object' && a[0] === 'consent');

mergeObjects(consentHistory.map(a=>a?.[2]||{}));

Этот фрагмент кода возвращается с моей стороны:

{
"ad_storage": "granted",
"ad_user_data": "granted",
"ad_personalization": "granted",
"analytics_storage": "granted",
"functionality_storage": "granted",
"personalization_storage": "granted",
"security_storage": "granted"
}

Заметьте, я не проверял это подробно.

Если у вас есть GTM, то window.google_tag_data.ics.entries содержит информацию о текущих состояниях согласия.

Хитрый метод — перехватывать все запросы на уровень данных и отслеживать команды согласия. Сделать это правильно немного сложно, поскольку вам нужно объединить данные в командах и обновить переопределенные значения по умолчанию. Он также не знает обо всех изменениях согласия в GTM.

Ответ принят как подходящий

Эту функцию можно использовать:

window.google_tag_data.ics.getConsentState("analytics_storage");

0 означает отсутствие согласия (отказано), а 1 означает, что согласие было предоставлено.

Другие вопросы по теме

Как отправить значения уровня данных в конечную точку стороннего API?
Если в диспетчере тегов Google мы выбираем тип тега в качестве входа в систему, нужно ли нам добавлять триггер для этого тега? Как работает тип тега входа?
Диспетчер тегов Google: как отправить пользовательский массив в GTM, чтобы можно было построить правильный пользовательский отчет в Google Analytics
Отправка пользовательских событий тега Google в виде пакета
Как получить значение события из API тегов Google
Google Analytics 4 gtm.js не срабатывает
Нужен ли фрагмент с защитой от мерцания для GA4?
Могу ли я создать полноценную страницу в Диспетчере тегов Google?
Как работает событие `gtm.start` (диспетчер тегов Google) в многостраничных и одностраничных гибридных приложениях?
Эта языковая функция поддерживается только для режима ECMASCRIPT_2015 или лучше: объявление функции с областью видимости блока