Каков наилучший и наиболее оптимальный способ проверить список заданных групп объявлений (список идентификаторов групп объявлений) на предмет отклонения статуса и узнать причины отклонения?
Самый простой, но не оптимальный способ:
1) Получить все отклоненные группы объявлений учетной записи:
params = {
'status': ['DISAPPROVED'],
'limit': 1000
}
adgroup_iter = account.get_ad_groups(params=params)
disapproved_ad_ids = []
for adgroup in adgroup_iter:
disapproved_ad_ids.append(adgroup._data['id'])
2) Из полученного списка выберите только интересующие ad_groups пересекающимися списками:
ads_of_interest = list(set(ad_ids_to_check) & set(disapproved_ad_ids))
3) Сделайте запрос ДЛЯ КАЖДОЙ интересующей группы объявлений по причинам отклонения (поле adgroup_review_feedback):
for adgroup_id in ads_of_interest:
adgroup = AdGroup(adgroup_id)
print adgroup.remote_read(fields=[AdGroup.Field.adgroup_review_feedback])
Плохо то, что у меня работает много рекламы, и нехорошо делать отдельный вызов API, чтобы получить причину отклонения для каждой из них, потому что это просто заставляет меня превышать лимит запросов facebook.
ЗАКОНЧИЛСЯ РЕШЕНИЕМ:
params = {
'adgroup_status': ['DISAPPROVED'],
'limit': 500,
'fields': 'id,adgroup_review_feedback'
}
а затем ищет пересечения результатов и список «интересных» объявлений, отбрасывая 3-й абзац моего вопроса, потому что необходимые данные уже содержатся в результатах 1-го (спасибо за ответ @Igy)
Упомяните имя поля 'adgroup_status'
вместо 'status'
(как указано в моем вопросе) - это решило проблему неправильных ответов facebook. Вероятно, это опечатка в документации в разделе "Извлечение всех реклама рекламного аккаунта..." пример для Python SDK, так как он не работает в SDK v.2.2.6