首页 > 解决方案 > 使用 Marketing API 获取 AdInsights 并按小时细分,但没有返回每小时数据

问题描述

营销 API v7.0(java 库)

我正在尝试提取每小时指标数据,但返回的报告不包含每小时信息。这是一些伪代码,因此您可以看到我是如何尝试获取它的:

AdAccount.APIRequestGetInsightsAsync insightsRequest = new AdAccount(ac.getId(), context).getInsightsAsync();
insightsRequest.setLevel( AdsInsights.EnumLevel.VALUE_ADSET );
insightsRequest.setBreakdowns(Arrays.asList(AdsInsights.EnumBreakdowns.VALUE_HOURLY_STATS_AGGREGATED_BY_AUDIENCE_TIME_ZONE));
// fields == "adset_id","campaign_id","impressions","inline_link_clicks","spend,action_values","actions","date_start"
insightsRequest.requestFields( Arrays.asList(fields) );
AdReportRun report = insightsRequest.execute();

我希望此报告中返回的数据包括每小时信息,如下所示:

....
{
"impressions": "172",
"date_start": "2020-06-23",
"date_stop": "2020-06-23",
"hourly_stats_aggregated_by_audience_time_zone": "01:00:00 - 01:59:59"
...
}
....

但是,我得到的数据看起来像这样

....
{
"impressions": "172",
"date_start": "2020-06-23",
"date_stop": "2020-06-23",
...
}
....

也就是说,json 中永远不会出现 "hourly_stats_aggregated_by_audience_time_zone": "01:00:00 - 01:59:59" 数据。因此,我没有每小时的信息。

任何关于为什么会这样,或者我可能做错了什么的见解将不胜感激。

标签: facebook-graph-apifacebook-marketing-api

解决方案


在这里回答我自己的问题。问题是AdsInsights类在

facebook-java-business-sdk.7.0.1

java lib 缺少以下数据成员:

@SerializedName("hourly_stats_aggregated_by_advertiser_time_zone") 
private String mHourlyStatsAggregatedByAdvertiserTimeZone = null; 

@SerializedName("hourly_stats_aggregated_by_audience_time_zone") 
private String mHourlyStatsAggregatedByAudienceTimeZone = null;

显然,最后一次出现这些字段是在同一个库的 6.0.0 版本中。我检查了更改日志,没有迹象表明这些字段已被弃用或删除,所以这几乎可以肯定是某种疏忽。

对于任何可以更新最新的 java jdk 库的人,请恢复这些字段以及同样丢失的product_id数据成员。谢谢。


推荐阅读