我正在尝试使用 Facebook 的 ads-api 获取指定时间范围内有关广告帐户/事件/等的数据。
到目前为止,我设法使用官方 python sdk 获取了整体信息(在下面添加), 但我不知道如何插入时间过滤条件。
答案可能在“过滤结果”下,但我不明白如何将他们在那里做的事情翻译成 python... https://developers.facebook.com/docs/reference/ads-api/adstatistics/v2.2
如果您能提供任何帮助,我将不胜感激
谢谢!
这是来自官方 python sdk 项目的相关模块(我认为): https://github.com/facebook/facebook-python-ads-sdk/blob/master/facebookads/objects.py
我当前的代码是:
from facebookads.session import FacebookSession
from facebookads.api import FacebookAdsApi
from facebookads import objects
from facebookads.objects import (
AdUser,
AdCampaign,
)
my_app_id = 'APP_ID'
my_app_secret = 'AP_SECRET'
my_access_token = 'ACCESS_TOKEN'
my_session = FacebookSession(my_app_id, my_app_secret, my_access_token)
my_api = FacebookAdsApi(my_session)
FacebookAdsApi.set_default_api(my_api)
me = objects.AdUser(fbid='me')
my_accounts = list(me.get_ad_accounts())
my_account=my_accounts[1]
print(">>> Campaign Stats")
for campaign in my_account.get_ad_campaigns(fields=[AdCampaign.Field.name]):
for stat in campaign.get_stats(fields=[
'impressions',
'clicks',
'spent',
'unique_clicks',
'actions',
]):
print(campaign[campaign.Field.name])
for statfield in stat:
print("\t%s:\t\t%s" % (statfield, stat[statfield]))
我得到的输出是(所有大写字母和 xxxx 都是我的):
Campaign Stats
CAMPAIGN_NAME1
impressions: xxxx
unique_clicks: xxxx
clicks: xxxx
actions: {u'mobile_app_install': xxxx, u'app_custom_event': xxxx, u'app_custom_event.fb_mobile_activate_app': xxx}
spent: xxxx
CAMPAIGN_NAME2
impressions: xxxx
unique_clicks: xxxx
clicks: xxxx
actions: {XXXX}
spent: xxxx
最佳答案
get_stats()
方法有一个名为 params
的附加参数,您可以在其中传入 start_time
和/或 end_time
.
params_data = {
'start_time': 1415134405,
}
stats = campaign.get_stats(
params=params_data,
fields=[
'impressions',
'clicks',
...
]
)
for stat in stats:
...
API 接受此处记录的许多不同参数:https://developers.facebook.com/docs/reference/ads-api/adstatistics
更多选读
params
参数和 fields
参数的原因需要一些解释。如果您不感兴趣,请随时忽略它。 :)
params
参数的实现基本上只是构造 API 调用的查询字符串:
params['start_time'] = 1415134405
创造:
?start_time=1415134405
广告 API 端点通常接受一个 fields
参数来定义您要返回的数据:
?fields=impressions,clicks&start_time=1415134405
您已正确定义,但因为它只是查询字符串中的字段
,您也可以在技术上这样做:
params['fields'] = 'impressions,clicks'
get_stats()
(和其他读取方法)中的 fields 参数是定义此 fields 参数的简单方法。实现看起来像这样:
def remote_read(self, params=[], fields=[]):
...
params['fields'] = fields
...
关于python - 使用 python sdk 从 facebook ads api 过滤统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26733594/