过滤Facebook广告活动,以获得Python交付的广告活动

过滤Facebook广告活动,以获得Python交付的广告活动,python,facebook,facebook-ads-api,facebook-marketing-api,Python,Facebook,Facebook Ads Api,Facebook Marketing Api,我想获得在给定时间范围内交付的活动列表。我可以得到一个时间范围内所有活动的列表,但需要帮助找出如何过滤它们 这是我目前的代码: FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token) my_account = objects.AdAccount('act_XXXXXXXXXXXXX') print my_account today = datetime.date.today() threeDaysAgo = today

我想获得在给定时间范围内交付的活动列表。我可以得到一个时间范围内所有活动的列表,但需要帮助找出如何过滤它们

这是我目前的代码:

FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token)

my_account = objects.AdAccount('act_XXXXXXXXXXXXX')
print my_account


today = datetime.date.today()
threeDaysAgo = today - timedelta(days=3)


#get list of campaigns from FB
cparams = {
    #'effective_status':['ACTIVE'],
    'time_range': {
        'since': threeDaysAgo.__str__(),
        'until': today.__str__()
    }
}
clist = my_account.get_campaigns(params=cparams)

这让我得到了这段时间内的所有活动。然而,我只需要那些已经交货的。我们如何做到这一点?

我想出了一种方法——使用insight edge

以下是如何:

fields = [
    Insights.Field.campaign_id,
    Insights.Field.campaign_name,
    Insights.Field.spend,
]

today = datetime.date.today()
threeDaysAgo = today - timedelta(days=3)
params = {
    'time_range': {'since': threeDaysAgo.__str__(), 'until': today.__str__()},
    'level': 'campaign',
    'limit': 100
}

insights = my_account.get_insights(fields=fields, params=params)
然后我们可以循环查看细节-以获取活动ID:

for i in insights:
    print "Processing ..." + i['campaign_id']
    cid = i['campaign_id']
然后以我们想要的任何方式处理活动和数据

 campaign = Campaign(cid + "")
而且

campaign.remote_read(fields=[
            Campaign.Field.name,
            Campaign.Field.effective_status,
            Campaign.Field.objective,
        ])
希望能有帮助