Adwords关键字报告返回单个查询中的不同数据而不是组合查询

时间:2014-05-20 12:13:27

标签: ruby google-adwords adwords-apiv201402

我们正在查询Adwords API以检索关键字的数据。在查询个别日期时,我们会获取其他数据,然后在单个查询中查询所有日期。

我们正在查询KEYWORDS_PERFORMANE_REPORT

campaign = AdwordsCampaign.find 957

# Weirdness returning from the Adwords keyword performance report
campaign.adwords.keyword_performance({min: Date.parse("2014-05-18"), max: Date.parse("2014-05-18")}).map{|kw| kw[:conversions]}.inject(:+)
#=> 0
campaign.adwords.keyword_performance({min: Date.parse("2014-05-19"), max: Date.parse("2014-05-19")}).map{|kw| kw[:conversions]}.inject(:+)
#=> 2
campaign.adwords.keyword_performance({min: Date.parse("2014-05-20"), max: Date.parse("2014-05-20")}).map{|kw| kw[:conversions]}.inject(:+)
#=> 0
campaign.adwords.keyword_performance({min: Date.parse("2014-05-18"), max: Date.parse("2014-05-20")}).map{|kw| kw[:conversions]}.inject(:+)
#=> 6
#=> waat moment - it should be 2?

查询检索结果的代码位于:https://gist.github.com/1f97a174ee6dd8ae51ea

有人知道发生了什么/我们做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

这与AdWords API不一致 - 您只需在keyword_performance方法中对这两次转化进行三次计算。原因如下:

全球关键字ID

所有AdWords中的关键字都有one Id globally,代表KeywordTextMatchType的唯一组合。关键字可以显示在广告系列中的多个广告组中。例如,如果您在同一广告系列中的两个不同广告组中有词组匹配关键字“cat videos”,则两个地方的关键字ID都相同。

在您的要点中,您需要拨打两次AdWords API。第一次,无论Id如何,您都会询问每个唯一关键字AdGroupId的转化次数。这将仅为“cat videos”词组匹配关键字返回一行(每ConversionCategoryName),并且将包含此关键字在广告系列中的任何位置获得的所有此类型的转化。

在第二次API调用中,您需要多个字段,包括AdGroupId。加入AdGroupId字段会使报告按广告组segmented生成。因此,如果关键字出现在多个广告组中,那么每个广告组都会有一个单独的行。

通过将转化次数分配给每个这些行,您最终会多次计算相同的转化次数。

为什么这只发生在较大的日期范围内?

这是因为您要排除零展示行。日期范围越长,出现在多个广告组中的关键字在多个广告组中至少有一次展示的可能性就越大,因此您的第二个报表中会有多行。

一个例子:

假设您的广告系列中包含以下广告组 - 关键字组合:

  • AG1-KW1
  • AG1-KW2
  • AG2-KW1
  • AG2-KW3
  • AG3-KW1
  • AG3-KW4
  • AG4-KW2

5/18 - KW1没有转化,但在每个广告组中出现至少一次展示。

5/19 - KW1再次没有转换。

5/20 - AG1-KW1获得2次转换。 AG2-KW1和AG3-KW1获得零印象。

如果您仅报告5/20的报告,则只有AG1-KW1在您的第二份报告中会有一行,而AG2-KW1和AG3-KW1将被排除在外。 KW1的转换次数将被计算一次。

但是在5 / 18-5 / 20的过程中,AG1-KW1,AG2-KW1和AG3-KW1各自至少有一次印象。如果您为此日期范围提取报告,则三者中的每一个都会在第二个报告中显示一行。 KW1的转换次数将被计算三次。