Как я могу получить более 25 результатов из API Facebook Insights, используя Facebook-business-python-SDK? - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь получить базовые данные об уровне рекламы из API понимания Facebook, используя facebook-python-business-sdk с python 3.7. Проблема в том, что я получаю только 25 результатов, даже если в аккаунтах более 25 активных объявлений.

Я использую метод get_insights для каждой учетной записи, передавая параметр 'level': 'ad' и фильтруя на определенную дату. Я также проверил, достиг ли я предела Facebook (используя объяснение, приведенное здесь ), и я даже не приблизился к пределу. Метод get_insights не имеет параметра limit, и в любом случае я не хочу его вообще ограничивать, поскольку в некоторых аккаунтах может быть сотни или даже тысячи объявлений.

Это код, который я использую

from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adaccountuser import AdAccountUser
from facebook_business.adobjects.campaign import Campaign as AdCampaign
from facebook_business.adobjects.adsinsights import AdsInsights

access_token = '******'
app_secret = '******'
app_id = '******'

FacebookAdsApi.init(app_id, app_secret, access_token)

me = AdAccountUser(fbid='me')
my_accounts = list(me.get_ad_accounts())

params={'time_range': {'since': '2019-06-29', 'until': '2019-06-29'},'level': 'ad'}
fields = [AdsInsights.Field.account_id,
           AdsInsights.Field.account_name,
           AdsInsights.Field.ad_id,
           AdsInsights.Field.ad_name,
           AdsInsights.Field.adset_id,
           AdsInsights.Field.adset_name,
           AdsInsights.Field.campaign_id,
           AdsInsights.Field.campaign_name,
           AdsInsights.Field.spend,
           AdsInsights.Field.impressions,
           AdsInsights.Field.clicks,
           AdsInsights.Field.outbound_clicks,
        ]

for account in my_accounts:
    ads = account.get_insights(params=params, fields=fields)
    print(ads)
    print(len(ads))

Я ожидал получить все объявления в каждой учетной записи, но я получаю максимум 25 объявлений на одну учетную запись. Любая помощь будет принята с благодарностью!

Спасибо

1 Ответ

1 голос
/ 03 июля 2019

Решение состоит в том, чтобы просто добавить параметр limit, см. Ниже:

from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adaccountuser import AdAccountUser
from facebook_business.adobjects.campaign import Campaign as AdCampaign
from facebook_business.adobjects.adsinsights import AdsInsights

access_token = '******'
app_secret = '******'
app_id = '******'

FacebookAdsApi.init(app_id, app_secret, access_token)

me = AdAccountUser(fbid='me')
my_accounts = list(me.get_ad_accounts())

params={'time_range': {'since': '2019-06-29', 'until': '2019-06-29'},'level': 'ad', 'limit': '20000'}
fields = [AdsInsights.Field.account_id,
           AdsInsights.Field.account_name,
           AdsInsights.Field.ad_id,
           AdsInsights.Field.ad_name,
           AdsInsights.Field.adset_id,
           AdsInsights.Field.adset_name,
           AdsInsights.Field.campaign_id,
           AdsInsights.Field.campaign_name,
           AdsInsights.Field.spend,
           AdsInsights.Field.impressions,
           AdsInsights.Field.clicks,
           AdsInsights.Field.outbound_clicks,
        ]

for account in my_accounts:
    ads = account.get_insights(params=params, fields=fields)
    print(ads)
    print(len(ads))

Благодаря @ Matteo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...