我们正在查询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
有人知道发生了什么/我们做错了什么?
感谢。
答案 0 :(得分:0)
这与AdWords API不一致 - 您只需在keyword_performance
方法中对这两次转化进行三次计算。原因如下:
所有AdWords中的关键字都有one Id globally,代表KeywordText
和MatchType
的唯一组合。关键字可以显示在广告系列中的多个广告组中。例如,如果您在同一广告系列中的两个不同广告组中有词组匹配关键字“cat videos”,则两个地方的关键字ID都相同。
在您的要点中,您需要拨打两次AdWords API。第一次,无论Id
如何,您都会询问每个唯一关键字AdGroupId
的转化次数。这将仅为“cat videos”词组匹配关键字返回一行(每ConversionCategoryName
),并且将包含此关键字在广告系列中的任何位置获得的所有此类型的转化。
在第二次API调用中,您需要多个字段,包括AdGroupId
。加入AdGroupId
字段会使报告按广告组segmented生成。因此,如果关键字出现在多个广告组中,那么每个广告组都会有一个单独的行。
通过将总转化次数分配给每个这些行,您最终会多次计算相同的转化次数。
这是因为您要排除零展示行。日期范围越长,出现在多个广告组中的关键字在多个广告组中至少有一次展示的可能性就越大,因此您的第二个报表中会有多行。
假设您的广告系列中包含以下广告组 - 关键字组合:
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的转换次数将被计算三次。