问题描述
我想用 Python 编写查询,我想要单个请求或多个请求中的所有广告效果详细信息。 我曾尝试使用以下查询,但多次发送以向 Facebook 发送请求是错误的想法,而且 Facebook 还阻止用户 30 分钟。
my_app_id = 'my_app_id'
my_app_secret = 'my_app_secret'
my_access_token = 'my_token'
FacebookAdsApi.init(my_app_id,my_app_secret,my_access_token)
my_account = AdAccount('act_')
ad_campaign_list = my_account.get_campaigns(fields=[Campaign.Field.name,Campaign.Field.id])
for campaign in ad_campaign_list:
campaign_index=Campaign(campaign["id"])
ad_setlist = campaign_index.get_ad_sets(fields=[AdSet.Field.name,AdSet.Field.id])
for ad_set in ad_setlist:
print(ad_set)
ad_set_index = AdSet(ad_setlist["id"])
ad_list = ad_set_index.get_ads(fields=[Ad.Field.name,Ad.Field.id])
for ad in ad_list:
print(ad)
Message: Call was not successful
Method: GET
Path: https://graph.facebook.com/v9.0/act_/ad
Params: {'fields': 'name,id','summary': 'true'}
Status: 400
Response:
{
"error": {
"message": "(#17) User request limit reached","type": "OAuthException","is_transient": true,"code": 17,"error_subcode": 2446079,"fbtrace_id": "Al42-tg1iVmvfE79RVrGDJW"
}
}
我想用来
my_app_id = 'my_app_id'
my_app_secret = 'my_app_secret'
my_access_token = 'my_token'
FacebookAdsApi.init(my_app_id,my_access_token)
my_account = AdAccount('act_')
ad = my_account.get_ads(fields=[Ad.Field.name,Ad.Field.id])
print(ad)
但我没有所有的广告
解决方法
您可以使用图谱 API 执行的请求数量有限。要了解有关限制的更多信息,check this link,但总的来说,您可以进行以下调用:
- 一小时内的通话次数 = 200 * 用户数
为了避免这个问题,我建议你不要像这样传递字段,而是像这样传递它们:
report = facebook_acc.get_campaigns(fields=['name,adsets{id,ads{id,name}}'])
这样您就可以在一次查询中获取所有广告信息。