Python 从facebook广告api获取所有活动-如何设置过滤器

Python 从facebook广告api获取所有活动-如何设置过滤器,python,facebook-graph-api,facebook-ads-api,Python,Facebook Graph Api,Facebook Ads Api,我想了解我在Facebook广告上运行的所有活动。我设法在我的帐户上使用FacebookAdsApi获取所有活动,但我无法使用过滤器,因此我只能获取具有“活动”状态的活动 以下是我目前的代码: from facebookads.api import FacebookAdsApi from facebookads.objects import AdAccount, Ad, Insights, AdUser import datetime my_app_id = 'xxx' my_app_secr

我想了解我在Facebook广告上运行的所有活动。我设法在我的帐户上使用FacebookAdsApi获取所有活动,但我无法使用过滤器,因此我只能获取具有“活动”状态的活动

以下是我目前的代码:

from facebookads.api import FacebookAdsApi
from facebookads.objects import AdAccount, Ad, Insights, AdUser
import datetime

my_app_id = 'xxx'
my_app_secret = 'xxx'
my_access_token = 'xxx'
FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token)

me = AdUser(fbid='me')
my_accounts = list(me.get_ad_accounts())
my_account = my_accounts[0]

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

params = {
    'time_range': {'since': str(datetime.date(2015, 1, 1)), 'until': str(datetime.date.today())},
    'level': 'campaign',
    'limit': 1000
}

insights = my_account.get_insights(fields=fields, params=params)
print len(insights)
>>> 115
我试图将以下行添加到
params

filtering': [{'field': 'campaign.effective_status','operator':'IN','value':['ACTIVE']}]
这将导致此错误消息:

"error_user_msg": "The reporting data you are trying to fetch has too many rows. Please use asynchronous query or restrict amount of ad IDs or time ranges to fetch the data."

我可以从我的帐户(115)中获得所有活动,没有任何问题,目前只有10个活动活动,因此我猜我的筛选是错误的?

这是insights查询的常见问题。在处理大量数据(大量活动、大量天数或两者兼而有之)时,您很容易遇到上述错误

说:

查询失败的时间没有明确的限制。当查询超时时,尝试将查询分解为更小的查询,方法是放入诸如date range之类的筛选器

在您的查询中,问题最有可能是由于从2015年初获取数据引起的。对于初学者,我建议使用例如
date\u preset=last\u 30\u days
(预设的日期间隔应该返回得更快)并从那里开始,也许可以将您的洞察加载逻辑拆分为更多的间隔

另一种选择是减小页面大小(
限制
),这也可能导致此问题


或最终解决方案-用于加载洞察。这可以防止FB超时,因为查询是异步运行的,只有在查询完成后才检查作业状态并加载数据。

您是对的-在过去30天内工作得非常好!你知道我能不能把一个活动作为一个领域?(如:Insights.Field.status)我可以筛选活动的、已删除的。。。但我不知道如何获得fieldNo的状态,据我所知insights edge只包含统计数据(数字)values@RandomDude您能告诉我您是如何按状态筛选活动的吗?(活动、暂停等)