如何在单一查询+Facebook营销api中获得所有活动的洞察力

2024-06-07 11:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python编写查询,我想所有活动的性能细节都在一个请求中。

如何在Python查询中转换下图api请求?

/<version>/act_<ACT_ID>/campaigns?fields=insights.fields(actions_results)

我试过使用下面的查询,但是多次发送请求到Facebook是错误的,Facebook也会阻塞用户30分钟。

fields = [Insights.Field.cpm,
          Insights.Field.cpp]

class Fb_insights(object):

    def __init__(self, app_id, app_secret, access_token):
        FacebookAdsApi.init(app_id, app_secret, access_token)

        # Add after FacebookAdsApi.init
        me = AdUser(fbid='me')
        self.my_account = me.get_ad_accounts()[0]

    def campaign_reports(self, since, until):
        params = {
           'level': Insights.Level.campaign, 
           'time_range': {
                'since': since,
                'until': until,
            },
        }

        for campaign in self.my_account.get_campaigns():
            for stat in campaign.get_insights(fields=fields,
                                                  params=params):
                print(stat)

糟糕的是,我每次都会通过调用“get_insights()”来发送请求。

更新

我还尝试直接获取洞察,下面的代码只返回1个活动详细信息,而我有1个活动和87个未交付活动,还更新参数中的level=campaign

for insight in self.my_account.get_insights(fields=fields, params=params):
    print insight

查询:使用更新的代码,如何使用单个查询获取所有已交付和未交付的活动?


Tags: selfappfieldsforgetinitmyaccount
3条回答

请看https://developers.facebook.com/docs/graph-api/using-graph-api部分“生成嵌套请求”。

通过调用以下api,您可以使用字段扩展在单个帐户查询中获得所有活动的详细信息:

https://graph.facebook.com/v2.10/YOUR_ACCOUNT_ID/campaigns?fields=name,status,insights{reach,impressions,clicks}&access_token=YOUR_TOKEN

字段扩展允许您将字段请求设置为节点。在上面的示例中,我获得了按活动分组的帐户中所有活动的细节,然后使用'insights{reach,impressions,clicks}'可以为节点级别选择字段。

EDIT:Removed level=campaign from URL,因为由于端点/活动

为了在一个请求中获得所有广告链接,我用下面的代码解决了我的问题。

class FB(object):
    def __init__(self):
        me = AdUser(fbid='me')
        self.my_account = me.get_ad_accounts()[0]

    def fb_creativies(self, since, until):
        """
        This function is used to get destination url
        for each creative object
        """
        fields = [AdCreative.Field.object_story_spec]
        params = {
            'time_range': {
                'since': since,
                'until': until,
            },
        }

        return self.my_account.get_ad_creatives(fields=fields, params=params)

我也做过类似的事情。我将级别设置为ad-请参见此处的示例代码:http://www.samk3nny.com/getting-ad-insights-from-facebook-and-avoiding-error-17/

然后每一个广告都有创意:

ad = Ad(fbid=ad_id)
creatives = ad.get_ad_creatives(fields=[AdCreative.Field.id,
                                        AdCreative.Field.object_story_spec,              
                                        AdCreative.Field.object_story_id])

相关问题 更多 >

    热门问题