6

मैं अपने लिए एक डैशबोर्ड बना रहा हूं जो मुझे चल रहे फेसबुक विज्ञापनों का ट्रैक रखने में मदद करता है।मेरे सभी सक्रिय फेसबुक विज्ञापन कैसे पुनर्प्राप्त करें?

क्या मैं यह पता लगाने के लिए सक्षम नहीं किया है किया गया है:

मैं कैसे सभी विज्ञापनों को सक्रिय या जल्द ही अपनी ओर से आगे कोई कार्रवाई के बाद सक्रिय हो सकता है कर रहे हैं के लिए विज्ञापन आईडी की एक सरणी प्राप्त कर सकते हैं ?

दूसरे शब्दों में, मैं सभी विज्ञापनों है कि मैं सक्रिय करने के लिए निर्धारित किया है और कहा कि Adsets और अभियान जो सक्रिय हैं के भीतर मौजूद चाहते हैं (और इसलिए इन विज्ञापनों को सही अब लाइव हैं) ... प्लस सभी विज्ञापनों को से मेरा परिप्रेक्ष्य सक्रिय है लेकिन फेसबुक ने लंबित समीक्षा जैसे अन्य स्थिति पर सेट किया है (और जल्द ही सक्रिय पर वापस सेट हो जाएगा)।

मैंने नीचे कुछ कोड है, लेकिन समस्या यह है कि यह भी गलती से लंबित विज्ञापनों को भी शामिल है - एक बार की समीक्षा की और फेसबुक द्वारा अनुमोदित - बल्कि सक्रिय से निष्क्रिय हो जाएगा (क्योंकि मैं उन्हें उस तरह से निर्धारित किया है) । और मैं नहीं चाहता कि इस प्रकार का विज्ञापन मेरी रिपोर्ट में शामिल किया जाए।

मेरी रिपोर्ट केवल मुझे उन लोगों को दिखाएगी जहां मैं सक्रिय रूप से पैसे खर्च कर रहा हूं या जैसे ही एफबी उन्हें मंजूरी देता है, पैसे खर्च करने की क्षमता है।

मुझे लगता है मैं configured_status और AbstractArchivableCrudObjectFields में effective_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

वाह, स्टैक ओवरव्लो डाउनहिल पर जा रहा है। मैंने इस प्रश्न पर प्रतिष्ठा के 50 अंक बिताए और अब तक के बारे में कोई टिप्पणी नहीं है * क्यों कोई टिप्पणी नहीं * क्यों। मैं दूसरों की चिंताओं को समझना शुरू कर रहा हूं, जैसे https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d – Ryan

उत्तर

1

मुझे अपने सक्रिय अभियानों के लिए संपत्तियों के आधार पर आंकड़े मिलते हैं। मेरे पास 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

साझा करने के लिए धन्यवाद। यद्यपि आपका कोड ऐसा लगता है कि यह शायद किसी की मदद करेगा, मुझे आश्चर्य है कि क्या आप मेरे प्रश्न के मुख्य भाग को समझ नहीं सकते हैं ('config_status' और' effect_status' के बीच के अंतर से संबंधित और उन सभी विज्ञापनों को कैसे पुनर्प्राप्त करें जो सक्रिय रूप से पैसे खर्च कर रहे हैं या फेसबुक द्वारा मेरे हिस्से पर आगे की कार्रवाई के बिना पैसे खर्च करने के लिए अनुमोदित किया जा सकता है)। – Ryan

संबंधित मुद्दे