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,针对不同的广告账户,可以查询的字段也不一样(坑))