Facebook Graph API 的 Filtering 功能允许你在请求数据时,通过指定条件来筛选返回的结果。有很多应用场景,比如通过名称去检索推广系列,检索正在投放中的推广系列等等。
1. 语法
在 Graph API 请求中,可以通过 filtering
参数来指定筛选条件。语法如下:
jsx
/endpoint?filtering=[{field:<field_name>,operator:<operator>,value:<value>}]
- field:要筛选的字段名称。
- operator :筛选操作符(例如,
EQUAL
、GREATER_THAN
、CONTAIN
等)。 - value:筛选的值。
2. 操作符
以下是常用的筛选操作符:
EQUAL
:等于。NOT_EQUAL
:不等于。GREATER_THAN
:大于。GREATER_THAN_OR_EQUAL
:大于或等于。LESS_THAN
:小于。LESS_THAN_OR_EQUAL
:小于或等于。IN
:在某个集合中。NOT_IN
:不在某个集合中。CONTAIN
:包含。NOT_CONTAIN
:不包含。
3. 使用案例
jsx
https://graph.facebook.com/v21.0/{adAccountId}/campaigns?
fields=name%2Cid
&limit=25
&access_token=<accessToken>
&filtering=[{'field':'name','operator':'CONTAIN','value':'0214_tiktok_app_install_sa'}]
上述就是一个用来通过名称检索推广系列的。
这个的使用场景在于,如果你通过api创建推广系列完成后,由于网络问题,导致你没有收到响应结果,或者在业务处理过程中,出现了导致你未能存储推广系列信息到你本地数据库,这个时候你重新执行任务就会导致重复创建。
4. 多条件检索
由于filtering使用的是中括号,所以可以进行多条件检索
你可以通过数组形式指定多个筛选条件。例如,获取状态为 ACTIVE
且预算大于 $50 的广告组:
GET /act_{ad_account_id}/adsets?filtering=[
{field:"status",operator:"EQUAL",value:"ACTIVE"},
{field:"daily_budget",operator:"GREATER_THAN",value:"50"}
]
5. 注意事项
Filtering 的注意事项
- 字段支持:并非所有字段都支持筛选功能,具体支持的字段请自行尝试,毕竟facebook的文档很垃圾。
- 性能优化:随着广告数据越来越多,增量检查才是王道,所以要用好filtering。针对删除的广告,可以通过activities进行获取用户操作。
- 权限要求:某些字段可能需要特定的权限才能访问(同一个accessToken,针对不同的广告账户,可以查询的字段也不一样(坑))