如何提取 gtag( 'consent' ) 值?

问题描述 投票:0回答:1

按照 Google 说明 我正在我正在开发的网站上设置同意。 我可以通过 GTM 和其他一切设置

gtag()
同意,我想知道:如何取回用户在
gtag('consent')
中设置的值? (如
default|update
ad_user_data
functionality_storage
等)

Google 文档解释说 gtag() 有一个

gtag('get')
选项,但
gtag('consent')
似乎是一个完全不同的选项,
gtag('get')
不起作用,并且我无法检索设置的值。

javascript google-tag-manager gtag.js cookieconsent
1个回答
0
投票

我不是这个主题的专家,但我发现了一些对我有用的东西:

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"
}

请注意,我没有详细测试它。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.