6

Tôi đang tạo trang tổng quan cho chính mình giúp tôi theo dõi quảng cáo trên Facebook mà tôi đang chạy.Làm cách nào để truy xuất tất cả quảng cáo Facebook đang hoạt động của tôi?

gì tôi đã không thể tìm ra là:

Làm thế nào tôi có thể lấy một mảng các ID quảng cáo cho tất cả quảng cáo đang hoạt động hoặc có thể sớm được hoạt động sau khi không có thêm hành động trên một phần của tôi ?

Nói cách khác, tôi muốn tất cả quảng cáo mà tôi đã thiết lập để hoạt động và tồn tại trong vòng Adsets và Chiến dịch đang hoạt động (và do đó các quảng cáo này là sống ngay bây giờ) ... cộng tất cả quảng cáo từ quan điểm của tôi là Hoạt động nhưng Facebook đã đặt thành một trạng thái khác như Đang chờ xem xét (và sẽ sớm đặt lại thành Hoạt động).

Tôi có một số mã bên dưới, nhưng vấn đề là cũng vô tình bao gồm quảng cáo đang chờ xử lý - khi được xem xét và phê duyệt bởi Facebook - sẽ không hoạt động thay vì hoạt động (vì tôi đã đặt chúng theo cách đó) . Và tôi KHÔNG muốn loại quảng cáo này được đưa vào báo cáo của mình.

Báo cáo của tôi chỉ nên hiển thị cho tôi những người mà tôi đang tích cực chi tiêu tiền hoặc có khả năng chi tiền ngay khi FB chấp thuận chúng.

Tôi nghĩ tôi hiểu sự khác biệt giữa configured_statuseffective_status trong AbstractArchivableCrudObjectFields, nhưng tôi không biết rằng đó là đủ để giúp tôi vì tôi có rất nhiều quảng cáo thiết lập để kích hoạt mà nằm trong Adsets có Inactive, và tôi don' Tôi muốn xem những người được liệt kê trong báo cáo của tôi.

Bất kỳ đề xuất nào?

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

Wow, StackOverflow sắp ngừng hoạt động. Tôi đã dành 50 điểm danh tiếng cho câu hỏi này và cho đến nay có một -1 là điểm số của nó với * không có ý kiến ​​* về lý do tại sao. Tôi bắt đầu hiểu những mối quan tâm của người khác, chẳng hạn như https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d – Ryan

Trả lời

1

Tôi nhận thống kê dựa trên nội dung cho các chiến dịch đang hoạt động của mình. Tôi có 119 tài khoản quảng cáo. Đây là mã php mà tôi đã sử dụng nó cho mục đích này (bất kỳ đề xuất nào để cải thiện nó sẽ được đánh giá cao):

$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

Cảm ơn bạn đã chia sẻ. Mặc dù mã của bạn có vẻ như có thể giúp ai đó, tôi tự hỏi nếu bạn không hiểu phần chính của câu hỏi của tôi (liên quan đến sự khác biệt giữa 'configure_status' và' effective_status' và cách truy xuất tất cả quảng cáo đang tích cực chi tiêu tiền hoặc có thể được Facebook phê duyệt để chi tiêu tiền mà không cần thêm bất kỳ hành động nào từ phía tôi). – Ryan

Các vấn đề liên quan