我正在嘗試創建Facebook Ads清除程序,這會刪除指定廣告系列中已完成的AdSets。您可以擁有的未刪除的非歸檔AdSets有多少限制(對於批量帳戶而言,這是10000),並且我們正在很快達到此限制。使用Marketing API刪除已完成的Facebook AdSets
我使用的營銷API和Facebook廣告API SDK的PHP: https://github.com/facebook/facebook-php-ads-sdk
雖然很明顯AdSets如何可以檢索,我無法找到一個方式,通過結束時間過濾。有一個「since」參數,但它看起來像不會在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的一個活動,這將意味着從字面上迭代ALL AdSets內一個接一個,並檢查它的結束日期。通常,我們談論的是成千上萬的記錄,而且這種方法非常無效。由於我們有大量的廣告帳戶,「清潔」腳本永遠運行,即使它沒有很快超時。
問題:有沒有辦法通過end_time過濾AdSets?看起來可以通過明確地證明一個值,但是我找不到使用「少於」或「多於」語法過濾值的方法。