注意:此开发者网站正在向 developers.google.com/tag-platform 迁移,2021 年 9 月 30 日起将会进行重定向

在跟踪代码管理器中配置意见征求方式

Google 跟踪代码管理器包含多项功能,这些功能可协同发挥作用,助您利用跟踪代码管理器模板(可部署在社区模板库中)来构建用户意见征求管理解决方案。这些功能包含一组 API 和用户意见征求类型,可让您更好地控制代码的运作方式。 详细了解跟踪代码管理器的用户意见征求设置和配置

如需配置默认用户意见征求设置,请使用 setDefaultConsentState API。在用户进行初始设置期间,请提示他们选择默认偏好设置。以下示例展示了对用户的 setDefaultConsentState 调用,该调用指示 ad_storage 默认情况下应为 'denied',而 analytics_storagefunctionality_storagepersonalization_storagesecurity_storage 默认情况下应为 'granted'

const setDefaultConsentState = require('setDefaultConsentState');

setDefaultConsentState({
  'ad_storage': 'denied',
  'analytics_storage': 'granted',
  'functionality_storage': 'granted',
  'personalization_storage': 'granted',
  'security_storage': 'granted',
  'wait_for_update': 500
});

更新行为

当网站用户表明自己的意见(通常通过与意见征求横幅互动表明)之后,请使用 updateConsentState API 相应地更新用户同意情况。以下示例展示了对用户的 updateConsentState 调用,该调用表明用户同意 ad_storageanalytics_storagefunctionality_storagepersonalization_storagesecurity_storage

const updateConsentState = require('updateConsentState');

updateConsentState({
  'ad_storage': 'granted',
  'analytics_storage': 'granted',
  'functionality_storage': 'granted',
  'personalization_storage': 'granted',
  'security_storage': 'granted'
});

实现示例

对于以下实现示例,您必须在模板编辑器中创建三个字段。

command 字段

  1. 字段标签页下,点击添加字段
  2. 选择下拉菜单
  3. 将名称更改为 command
  4. 点击添加菜单项,然后输入 default 作为项目名称,并输入 default 作为
  5. 点击添加菜单项,然后输入 update 作为项目名称,并输入 update 作为

defaultSettings 字段

  1. 字段标签页下,点击添加字段
  2. 选择参数表格
  3. 将名称更改为 defaultSettings,然后展开该字段
  4. 显示名称更新为 Default settings
  5. 点击添加列,选择文本输入,将名称更改为 region,并选中要求列值必须具有唯一性。展开对应的列,并将显示名更改为 Region (leave blank for all regions)
  6. 点击添加列,选择文本输入,将名称更改为 granted。展开对应的列并将显示名更改为 Granted (comma separated)
  7. 点击添加列,选择文本输入,将名称更改为 granted。展开对应的列并将显示名更改为 Granted (comma separated)

updateSettings 字段

重复 defaultSettings 字段的步骤,但要将字段命名为 updateSettings,而不是 defaultSettings

创建这三个字段后,您可以继续转到代码标签页,然后输入以下代码:

const setDefaultConsentState = require('setDefaultConsentState');
const updateConsentState = require('updateConsentState');

const splitInput = (input) => {
  return input.split(',')
    .map(entry => entry.trim())
    .filter(entry => entry.length !== 0);
};

const parseCommandData = (settings) => {
  const regions = splitInput(settings.region);
  const granted = splitInput(settings.granted);
  const denied = splitInput(settings.denied);

  const commandData = {};
  if (regions.length > 0) {
    commandData.region = regions;
  }
  granted.forEach(entry => {
    commandData[entry] = 'granted';
  });
  denied.forEach(entry => {
    commandData[entry] = 'denied';
  });
  return commandData;
};

if (data.command === 'default') {
  data.defaultSettings.forEach(settings => {
    const commandData = parseCommandData(settings);
    setDefaultConsentState(commandData);
  });
}
if (data.command === 'update') {
  data.updateSettings.forEach(settings => {
    const commandData = parseCommandData(settings);
    updateConsentState(commandData);
  });
}

data.gtmOnSuccess();

用户意见征求类型

用户意见征求类型
ad_storage 必需
analytics_storage 必需
functionality_storage 推荐
personalization_storage 推荐
security_storage 推荐

区域特有的行为

如需针对特定区域的用户更改默认代码行为,请在意见征求命令中指定区域。通过提供该值,您可以根据用户的地理位置微调默认值。例如,要针对来自西班牙和阿拉斯加的用户将 analytics_storage 设置为 'denied',并针对所有其他用户将 analytics_storage 设置为 'granted',请运行以下代码:

const setDefaultConsentState = require('setDefaultConsentState');

setDefaultConsentState({
  'analytics_storage': 'denied',
  'region': ['ES', 'US-AK']
});
setDefaultConsentState({
  'analytics_storage': 'granted'
});

以最具体的区域为准

如果同一个网页上出现了两个分别包含区域和子区域值的默认意见征求命令,则更具体的区域对应的命令就会生效。例如,如果您针对区域 USad_storage 设置为 'granted',并针对区域 US-CAad_storage 设置为 'denied',则对于来自加利福尼亚州的访问者而言,更具体的 US-CA 设置将会生效。这意味着,在此示例中会针对来自 US-CA 的访问者将 ad_storage 设置为 'denied'

区域 ad_storage 行为
美国 'granted' 适用于美国境内而非加拿大境内的用户
美国-加拿大 'denied' 适用于美国-加拿大用户
未指定 'granted' 使用 'granted' 的默认值。适用于不在美国境内或不在美国-加拿大境内的用户