Facebook graph api 如何避免;请求的数据太多”;在Facebook广告API调用中

Facebook graph api 如何避免;请求的数据太多”;在Facebook广告API调用中,facebook-graph-api,Facebook Graph Api,我使用Facebook广告Api调用一个广告帐户中ADA的统计数据: GET graph.facebook.com/v2.7/act_xxxx/insights?level=ad 但它返回错误: Please reduce the amount data you request. 我想知道如何解决它?谢谢。发生此问题的原因是您在一个广告帐户下查询所有广告,而该帐户可能包含太多广告 解决方案:首先尝试查询广告帐户下的活动,然后仅查询在特定时间范围内具有洞察力(统计信息)的活动 pythonap

我使用Facebook广告Api调用一个广告帐户中ADA的统计数据:

GET graph.facebook.com/v2.7/act_xxxx/insights?level=ad
但它返回错误:

Please reduce the amount data you request.

我想知道如何解决它?谢谢。

发生此问题的原因是您在一个广告帐户下查询所有广告,而该帐户可能包含太多广告

解决方案:首先尝试查询广告帐户下的活动,然后仅查询在特定时间范围内具有洞察力(统计信息)的活动

pythonapi如下:(start_dt,end_dt,account_id是您应该输入的内容)


谢谢你的帮助
        total_insights = []

        # Get campaign first, then get ad insights
        account = AdAccount("act_" + str(fb_account_id))

        valid_campaigns = []
        campaigns_iterator = account.get_campaigns(
            fields=[
                Campaign.Field.id,
            ]
        )
        for campaigns in self.generate_batches(
            campaigns_iterator,
            BATCH_LIMIT,
        ):
            api_batch = self.api.new_batch()
            for campaign in campaigns:
                params = {
                    'time_range': { 'since': start_dt, 'until': end_dt },
                    'level': 'campaign',
                    'filtering': '[{field:"campaign.impressions",operator:"GREATER_THAN",value:0},]',
                    'fields': ['impressions']
                }
                campaign_insights = campaign.get_insights(params=params)
                if campaign_insights:
                    valid_campaigns.append(campaign)
            api_batch.execute()

        for campaign in valid_campaigns:
            params = {
                'time_range': { 'since': start_dt, 'until': end_dt },
                'level': 'ad',
                'filtering': '[{field:"ad.impressions",operator:"GREATER_THAN",value:0},]',
                'fields':['spend','unique_social_clicks', 'inline_link_clicks', 'impressions', 'actions', 'relevance_score', 'ad_id', 'adset_id', 'campaign_id'],
            }
            insights_iterator = campaign.get_insights(params=params)

            # query insights later
            for ad_insights in self.generate_batches(
                insights_iterator,
                BATCH_LIMIT,
            ):
                api_batch = self.api.new_batch()
                total_insights.extend(ad_insights)
                api_batch.execute()