Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

272
Views
¿Cómo recuperar todos mis anuncios activos de Facebook?

Estoy creando un tablero para mí que me ayuda a realizar un seguimiento de los anuncios de Facebook que estoy publicando.

Lo que no he podido descifrar es:

¿Cómo puedo recuperar una serie de identificadores de anuncios para todos los anuncios que están activos o que podrían estarlo pronto si no tomo ninguna otra acción de mi parte?

En otras palabras, quiero todos los anuncios que configuré como Activos y que existen dentro de los Conjuntos de anuncios y Campañas que están activos (y, por lo tanto, estos anuncios están activos en este momento)... además de todos los anuncios que, desde mi perspectiva, están Activos pero que Facebook ha establecido otro estado, como Pendiente de revisión (y pronto volverá a estar Activo).

Tengo un código a continuación, pero el problema es que accidentalmente también incluye anuncios pendientes que, una vez revisados y aprobados por Facebook, estarán inactivos en lugar de activos (porque los configuré de esa manera). Y NO deseo que este tipo de anuncios se incluyan en mi informe.

Mi informe solo debe mostrarme aquellos en los que estoy gastando dinero activamente o tengo el potencial de gastar dinero tan pronto como FB los apruebe.

Creo que entiendo la diferencia entre el configured_status y el estado effective_status en AbstractArchivableCrudObjectFields , pero no sé si es suficiente para ayudarme porque tengo muchos anuncios configurados como Activos que están dentro de Conjuntos de anuncios que están Inactivos, y no quiero ver los enumerados en mi informe.

¿Alguna recomendación?

 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); }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Obtengo estadísticas basadas en activos para mis campañas activas. Tengo 119 cuentas publicitarias. Este es el código php que usé para este propósito (cualquier sugerencia para mejorarlo será apreciada):

 $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;
over 4 years ago · Santiago Trujillo Report

0

Si incluye el adset{end_time} en la consulta del anuncio, puede suponer que el anuncio no se está ejecutando realmente si el end_time fue en el pasado. Así es como obtenemos una lista base de anuncios para consultar.

El siguiente paso que tomamos (que probablemente no lo ayude, lamentablemente, pero puede ayudar a otros) es crear un lote de solicitudes simples (una por anuncio) para ver si hay datos de estadísticas para ese día. Si la respuesta es una matriz de 'datos' vacía, podemos eliminar esa ID de la lista de anuncios.

Una vez que hayamos reducido el tamaño de la lista de anuncios con esos dos pasos, podemos realizar solicitudes para ejecutar todos nuestros informes de desglose. Este método casi reduce nuestras solicitudes de API a la mitad.

Todavía tengo que encontrar una manera de hacer una consulta de "dame todos los anuncios que seguramente se publicarán este día" en un solo paso.

Editar: Acabo de encontrar una mejor manera de hacer esto.... :

 curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ -d 'level=campaign' \ -d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0}]' \ 'https://graph.facebook.com/v2.7/act_<ACCOUNT_ID>/insights'
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!