2016-09-15 4 views
0

지정한 캠페인에서 완료된 AdSets를 삭제하는 Facebook Ads Cleaner를 만들려고합니다. 삭제되지 않은 보관되지 않은 AdSets에는 일괄 계정의 경우 10000 개가 될 수있는 제한이 있으며이 제한에 매우 빨리 도달하고 있습니다.마케팅 API를 사용하여 완료된 Facebook AdSets 삭제

나는 PHP를위한 마케팅 API를 사용하여, 페이스 북 광고 API의 SDK 오전 : 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을 의미하고 검사가 종료 날짜입니다. 일반적으로 수천 개의 레코드에 대해 말하고 있으며 이러한 접근 방식은 대단히 비효율적입니다. 우리가 많은 광고 계정을 가지고 있기 때문에 "치료"스크립트는 시간 초과가되지 않더라도 영원히 실행됩니다.

질문 : end_time까지 AdSets을 필터링하는 방법이 있습니까? 명시 적으로 값을 증명하는 것이 가능해 보이지만 "미만"또는 "초과"구문을 사용하여 값을 필터링하는 방법을 찾을 수 없습니다.

답변

0

adset의 실행이 완료되면 유효 상태는 '일시 중지'상태가됩니다. 이렇게하면 더 적은 수의 하위 집합이 반환됩니다. PAUSED 상태의 광고 세트를 필터링 한 다음 유효 기간이 지난 후에 종료 시간을 확인하고 삭제할 수 있습니다.

관련 문제