【发布时间】:2017-08-31 10:26:03
【问题描述】:
我正在为自己创建一个仪表板,帮助我跟踪正在投放的 Facebook 广告。
我一直想不通的是:
我如何检索所有活动广告的广告 ID 数组或在我不采取进一步行动后很快就会活动?
换句话说,我希望所有已设置为有效且存在于有效的广告集和广告系列中的广告(因此这些广告现在处于活动状态)...加上全部从 我的 角度来看的广告是活跃的,但 Facebook 已设置为其他状态,例如待审核(并且很快将设置回活跃)。
我在下面有一些代码,但问题是它也不小心包含待处理的广告——一旦被 Facebook 审查和批准——将处于非活动状态而不是活动状态(因为我已经设置他们那样)。而且我不希望这种类型的广告包含在我的报告中。
我的报告应该只向我显示我正在积极花钱或在 FB 批准后有可能花钱的地方。
我想我理解AbstractArchivableCrudObjectFields 中configured_status 和effective_status 之间的区别,但我不知道这是否足以帮助我,因为我有很多设置为Active 的广告位于非活动的广告集中,并且我不想看到我的报告中列出的那些。
有什么建议吗?
public function getActiveAdIds() {
$key = 'activeAdIds';
$adIdsJson = Cache::get($key);
if ($adIdsJson) {
$adIds = json_decode($adIdsJson);
} else {
$adsResponse = $this->getAdsByStatus([ArchivableCrudObjectEffectiveStatuses::ACTIVE, ArchivableCrudObjectEffectiveStatuses::PENDING_REVIEW]);
$ads = $adsResponse->data;
$adIds = [];
foreach ($ads as $ad) {
$adIds[] = $ad->id;
}
$adIdsJson = json_encode($adIds);
Cache::put($key, $adIdsJson, 1);
}
return $adIds;
}
public function getAdsByStatus($statuses) {
$params = [\FacebookAds\Object\Fields\AbstractArchivableCrudObjectFields::EFFECTIVE_STATUS => $statuses];
$adAccount = new AdAccount(self::ACT_PREPEND . $this->fbConfig['account_id']);
$cursor = $adAccount->getAds([], $params);
$response = $cursor->getResponse();
$jsonString = $response->getBody();
return json_decode($jsonString);
}
【问题讨论】:
-
有机会分享一下,你是怎么解决这个问题的?
-
@Sigismund 仍未解决。如果你发现了,我很乐意你在这里发布答案。
标签: php facebook-php-sdk facebook-ads-api facebook-insights facebook-marketing-api