过滤Facebook广告系列,以便在Python中提供交付

时间:2017-01-14 03:18:29

标签: 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 - 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)

这会在时间范围内获取所有广告系列。但是,我只需要获得已经交付的那些。我们怎么做?

1 个答案:

答案 0 :(得分:0)

我想出了一种方法 - 使用洞察力。

以下是:

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,
        ])

希望它有所帮助。