如何检索我所有活跃的Facebook广告?

问题描述:

我为自己创建了一个仪表板,帮助我跟踪正在运行的Facebook广告。如何检索我所有活跃的Facebook广告?

我已经无法搞清楚的是:

我怎样才能检索到的广告ID数组有活动可能很快就会被激活后,我的一部分不采取进一步行动的所有广告?

换句话说,我想我已经设置为有效,内Adsets并且是有效的广告活动中存在的所有广告(因此这些广告是活现在)... 加上所有广告从我的视角是活跃的,但Facebook已设置为另一个状态,如待审核(并且很快会恢复为活动状态)。

我有一些代码在下面,但问题是,它意外地包括待审查的广告,并经过Facebook批准 - 将不活跃(因为我已经设置他们这样) 。我不希望这种类型的广告包含在我的报告中。

我的报告应该只显示我积极花钱或有可能在FB批准后花钱的潜力。

我想我明白configured_statusAbstractArchivableCrudObjectFieldseffective_status之间的差别,但我不知道这是足以帮助我,因为我有很多设置为活动是内Adsets是无效的广告,而且我不我不想看到我的报告中列出的人。

有什么建议吗?

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); 
} 
+1

哇,StackOverflow正在走下坡路。我在这个问题上花了50分的名气,到目前为止,它的得分是-1,而没有评论*就是为什么。我开始了解别人的问题,比如https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d – Ryan

我根据活动广告系列的资产获取统计信息。我有119个广告帐户。这是我用于此目的的PHP代码(任何意见,以改善它将不胜感激):

$fields = array(AdsInsightsFields::ACCOUNT_NAME,AdsInsightsFields::CAMPAIGN_ID, 
        AdsInsightsFields::CAMPAIGN_NAME, AdsInsightsFields::ADSET_ID, 
        AdsInsightsFields::ADSET_NAME,AdsInsightsFields::DATE_START, 
        AdsInsightsFields::DATE_STOP,AdsInsightsFields::REACH, 
        AdsInsightsFields::SPEND, AdsInsightsFields::IMPRESSIONS, 
        AdsInsightsFields::CLICKS, AdsInsightsFields::WEBSITE_CLICKS, 
        AdsInsightsFields::CALL_TO_ACTION_CLICKS,AdsInsightsFields::ACTIONS, 
        AdsInsightsFields::TOTAL_ACTIONS,AdsInsightsFields::CPC, 
        AdsInsightsFields::CPM,AdsInsightsFields::CPP, 
        AdsInsightsFields::CTR,AdsInsightsFields::OBJECTIVE,); 
    $params_c['date_preset'] = AdDatePresetValues::YESTERDAY; 
    $params_c['time_increment'] = 1; 
    $params_c['action_attribution_windows'] = array('1d_view', '28d_click'); 
    $params_c['effective_status'] = AdStatusValues::ACTIVE; 
    $params_c['level'] = AdsInsightsLevelValues::ADSET; 
    $params_c['filtering'] = [array("field"=>"campaign.delivery_info", 
            "operator"=>"IN", 
            "value"=>array("active"))]; 
    $params_c['fields']= $fields;  
    try{ 
     // Initialize a new Session and instanciate an Api object 
     Api::init(self::api_key, self::secret_token, self::extended_token)->getHttpClient()->setCaBundlePath($this->path_cert); 

     // The Api object is now available trough singleton 
     $api = Api::instance(); 
     $user = new \FacebookAds\Object\Business($business_id); 
     $user->read(array(BusinessFields::ID)); 

     //get all ad_account from Business 
     $accounts = $user->getAssignedAdAccounts(
         array(
        AdAccountFields::ID, 
       ), 
        array('limit'=>1000,) 
       );          

    } catch (FacebookAds\Exception\Exception $ex) { 
     return $ex->getMessage(); 
    } 

    if(isset($accounts) && ($accounts->count() > 0)):   
     do{ 

      $ad_account = $accounts->current();    
      $adset_insights = $ad_account->getInsights($fields,$params_c); 

      do { 
       $adset_insights->fetchAfter(); 
      } while ($adset_insights->getNext()); 

      $adsets = $adset_insights->getArrayCopy(true); 
    } 
    while ($accounts->current());  
    endif; 
+0

感谢分享。虽然你的代码看起来可能会帮助某人,但我不知道你是否不明白我的问题的主要部分(涉及'configured_status'和'effective_status'之间的区别以及如何检索所有正在积极花钱的广告或者可以通过Facebook批准花钱而不需要我采取进一步行动)。 – Ryan