2016-09-15 5 views
0

Я пытаюсь создать Facebook Ads cleaner, который удаляет завершенные AdSet в указанной кампании. Существует ограничение на то, как могут быть удаленные неархивированные AdSets, которые вы можете иметь (что составляет 10000 для массовых учетных записей), и мы достигаем этого предела довольно быстро.Удаление заполненных Facebook AdSets с использованием маркетингового API

Я использую API маркетинга и Facebook Ads API SDK для PHP: https://github.com/facebook/facebook-php-ads-sdk

Хотя ясно, как AdSets может быть восстановлена, я не могу найти способ фильтровать их по времени окончания. Существует параметр «с», но похоже, что он не фильтрует дату начала и окончания AdSet и, скорее, сам фильтрует статистику. Поэтому AdSet, который все еще активен, попадет в указанный диапазон.

Мой код:

use FacebookAds\Object\Campaign; 
use FacebookAds\Object\Fields\AdSetFields; 
use Carbon\Carbon; 

// Facebook ID of a Ad Campaign 
$external_id = '123456789'; 
$campaign = new Campaign($external_id); 

// Querying required field only 
$fields = [ 
    AdSetFields::END_TIME 
]; 

// Need to query AdSets which have been completed in the past...? 
$params = [ 
]; 

$adsets = $campaign->getAdSets($fields, $params); 
$adsets->setUseImplicitFetch(true); 

while ($adsets->valid()) 
{ 
    /** @var AdSet $adset */ 
    $adset = $adsets->current(); 
    $end_time = Carbon::parse($adset->{AdSetFields::END_TIME}); 

    if ($end_time->isPast()) 
    { 
     $adset->delete(); 
    } 

    $adsets->next(); 
} 

Проблема: в случае, если есть много AdSets в кампании, это будет означать буквально перебору ВСЕХ AdSets внутри одного за другим, и проверку его окончание. Обычно мы говорим о тысячах записей, и такой подход крайне неэффективен. Поскольку у нас много аккаунтов объявлений, сценарий «очистки» работает вечно, даже если он не быстро заканчивается.

Вопрос: есть ли способ фильтровать AdSets к end_time? Похоже, это возможно, явно подтверждая значение, но я не могу найти способ фильтровать значение, используя синтаксис «меньше» или «больше».

ответ

0

Если функция adet завершена, ее фактический статус будет находиться в состоянии «PAUSED». Это должно вернуть меньшую часть объявлений. Вы можете фильтровать объявления в состоянии PAUSED, а затем проверять их конечное время и удалять после проверки.

 Смежные вопросы

  • Нет связанных вопросов^_^