Facebook营销图谱API stop_time过滤失效问题求助
解决Facebook Marketing Graph API stop_time筛选失效问题
问题原因分析
- 时区不匹配:Facebook Marketing API默认使用UTC时间处理时间字段筛选,若传入本地时区时间(如
+0100)未转换为UTC,会导致筛选逻辑偏差,返回不符合预期的过期广告系列。 - 未处理
stop_time为null的场景:部分ACTIVE状态的广告系列未设置结束时间(stop_time为null),这类广告会被GREATER_THAN操作符默认纳入结果,容易被误判为“已过期”。 - 时间格式精度问题:仅传入
2023-06-06这类日期格式时,API会默认解析为UTC当天的00:00:00,若你的预期是本地时区的当天结束时间,会导致筛选范围错误。
修正方案
1. 统一使用UTC时间格式
将目标筛选时间转换为UTC时区的ISO 8601格式(带Z后缀标识UTC),例如原时间2023-06-06T23:30:00+0100转换为UTC后是2023-06-06T22:30:00Z。
2. 明确处理stop_time为null的情况
- 若需包含永久运行(无结束时间)的广告系列:保留原有筛选逻辑,确保时间转换正确即可。
- 若需仅筛选有明确结束时间且未过期的广告系列:在
filtering中添加额外条件排除stop_time为null的条目。
修正后的请求示例
包含永久运行的广告系列
act_xxx/campaigns?fields=name,start_time,stop_time,effective_status&limit=1000&filtering=[{"field": "effective_status","operator": "IN","value": ["ACTIVE"] }, {"field": "stop_time","operator": "GREATER_THAN","value": "2023-06-06T22:30:00Z"}]
仅筛选有明确结束时间且未过期的广告系列
act_xxx/campaigns?fields=name,start_time,stop_time,effective_status&limit=1000&filtering=[{"field": "effective_status","operator": "IN","value": ["ACTIVE"] }, {"field": "stop_time","operator": "GREATER_THAN","value": "2023-06-06T22:30:00Z"}, {"field": "stop_time","operator": "NOT_EQUALS","value": null}]
验证步骤
- 调用修正后的API,检查返回结果中的
stop_time字段,确认是否符合预期范围。 - 若问题仍存在,可单独测试
stop_time筛选条件(移除effective_status筛选),排查多条件组合是否导致逻辑冲突。
内容的提问来源于stack exchange,提问作者andrew
相关产品推荐
相关产品推荐

