验证和问题排查

您在网站上实现了代码之后,一定要验证它们能否正确触发,并请解决发现的任何问题。如果您使用动态再营销,则还应确保参数名称与参数参考中的名称完全一致。

使用 AdWords 进行验证

如果您已设置了代码并开始接收添加了再营销代码的网页的流量,那么您可以通过 AdWords 界面本身进行一些基本代码验证。这种方法很简单,但是最长需要 15 分钟才能在 AdWords 界面中显示验证数据。

有关此方法的详细信息,请参阅 AdWords 帮助中心的再营销代码验证和提醒页面

使用 Google Tag Assistant 进行验证

Google Tag Assistant 是 Google Chrome 浏览器的免费扩展程序,用于快速检查 AdWords 再营销代码以及其他 Google 代码(如来自 Google Analytics(分析)和 DoubleClick Floodlight 的代码)的实现状态。图 1 显示了加载某个网页时 Google Tag Assistant 的输出示例,而该网页包含已发送请求的运行中再营销代码。图 2 显示了在已发送的再营销代码中发送的参数的详情。

Google Tag Assistant 显示已触发的代码
图 1:显示再营销代码成功触发的 Google Tag Assistant 示例
Google Tag Assistant 显示再营销代码触发期间传递的参数
图 2:显示再营销代码发送的再营销参数详情的 Google Tag Assistant 示例

可以通过 Chrome 网上应用店页面安装 Google Tag Assistant。安装后,Google Tag Assistant 将提供状态指示器,并针对在实现过程中遇到的问题提供与上下文相关的帮助。您可以在 Google Tag Assistant 帮助中心找到其他帮助。

使用基于浏览器的开发者工具进行验证

大多数现代浏览器目前都包含详细的开发者工具,通过让我们监视浏览器发出的 HTTP 请求,帮助验证再营销代码是否能够正常运行。

在执行这种验证方式时,我们可以使用这些开发者工具检查再营销代码是否使用正确的参数向 googleads.g.doubleclick.net 发送了 HTTP 请求,及是否从服务器得到了适当的响应。我们在下文介绍了如何对 Google Chrome 和 Mozilla Firefox 执行这一级别的验证 - 其他常见浏览器(如 Safari 和 Internet Explorer)具有相似功能,但具体步骤会有所不同。

常见代码触发问题排查

开发者工具中未显示请求

这可能只是因为加载代码时页面上并不存在代码 - 如果您使用的是代码管理解决方案,请确保它的触发规则是正确的,或者如果您直接在页面上实现代码,可以查看页面的来源并查找代码本身。

另一个常见问题是页面中的 javascript 错误导致浏览器中止 JavaScript 的执行。检查这一问题的最简单方法是查看开发者工具的“控制台”标签,查找任何 javascript 错误并加以解决,然后再次检查。

缺少 data 参数

如果您没有在再营销代码中传递任何自定义参数,则根本不会发送数据参数。然而,如果您打算发送自定义参数,请仔细检查以确保网页中包含该参数,并确保自定义参数代码段的参数名称和代码主体中对该代码段的引用相匹配,否则参数将被视为未定义。

意外 HTTP 响应代码

如果通过再营销代码的 HTTP 请求获得的响应代码不是 302,则实现可能存在问题。在这种情况下,您应该仔细检查代码在实现过程中是否出现了错误。

如果您的自定义参数特别多,网址特别长,那么当再营销代码触发并且请求的最终到达网址长度超过 2048 个字符时,您可能会收到 HTTP 响应 414400。尽管在这种情况下返回了错误,系统仍然会处理再营销请求,但如果请求被截断,则可能会丢失部分信息。请求中发送的网址和引荐来源网址被截断为 512 个字符,并且将成为第一个被截断的参数,之后请求中更重要的参数将被截断。

如果您在验证再营销代码时看到此错误,我们建议您重新审核您要发送的自定义参数 - 某些选项会将参数名称更改为较短名称,如果参数的值为空值或未定义值则不发送参数。

对常见的语法问题进行问题排查

google_tag_params 语法问题

以下是实现 google_tag_params 的广告客户在运行动态再营销时遇到的一些常见错误和问题。

错误解决方案
google_tag_params 对象的末尾包含逗号

var google_tag_params = {
  parameter1: 'abc123',
  parameter2: 29.99,
};
该代码在 parameter2 末尾有一个逗号,这导致 JavaScript 语法无效,进而引发 JavaScript 错误。应该移除末尾的逗号:

var google_tag_params = {
  parameter1: 'abc123',
  parameter2: 29.99
};
字符串无引号

var google_tag_params = {
  parameter1: abc123,
  parameter2: 29.99
};
没有为 parameter1 的值正确加引号,这意味着 JavaScript 试图将该参数视为对先前声明为 abc123 的变量的引用,但是因为先前未声明该变量,也即未定义,这会导致 JavaScript 错误。应该使用引号括起该字符串:

var google_tag_params = {
  parameter1: 'abc123',
  parameter2: 29.99
};
缺少属性值

var google_tag_params = {
  parameter1:,
  parameter2: 29.99
};
尚未提供 parameter1 的值,导致 JavaScript 语法无效,进而引发 JavaScript 错误。如果参数没有值,则不应该提供该参数

var google_tag_params = {
  parameter2: 29.99
};
缺少多个值的数组表示法

var google_tag_params = {
  parameter1: 'abc123', 'def456',
  parameter2: 29.99
};
parameter1 的值有多个值,但没有作为数组提供这些值。如果参数应该包含多于一个的值,那么需要使用标准的 JavaScript 表示法作为数组提供这些值。

var google_tag_params = {
  parameter1: ['abc123', 'def456'],
  parameter2: 29.99
};
作为字符串传递值数组

var google_tag_params = {
  parameter1: '[abc123, def456]',
  parameter2: 29.99
};
所提供的 parameter1 值是作为 JavaScript 字符串,而不是数组。如果参数应该包含多于一个的值,那么需要使用标准的 Javascript 表示法作为数组提供这些值。

var google_tag_params = {
  parameter1: ['abc123','def456'],
  parameter2: 29.99
};
对象属性以分号结尾

var google_tag_params = {
  parameter1: 'abc123';
  parameter2: 29.99;
};
google_tag_params 对象的属性以分号结尾,这导致 JavaScript 语法无效,进而引发 JavaScript 错误。应使用标准的 JavaScript 对象文本表示法来描述 google_tag_params 对象

var google_tag_params = {
  parameter1: 'abc123',
  parameter2: 29.99
};