0

Je souhaite obtenir la liste des campagnes qui ont été diffusées dans un intervalle de temps donné. Je peux obtenir la liste de toutes les campagnes dans un intervalle de temps - mais j'ai besoin d'aide pour trouver comment les filtrer.Filtrage des campagnes publicitaires sur Facebook pour obtenir celles avec livraison en Python

Voici mon code actuel:

FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token) 

my_account = objects.AdAccount('act_XXXXXXXXXXXXX') 
print my_account 


today = datetime.date.today() 
threeDaysAgo = today - timedelta(days=3) 


#get list of campaigns from FB 
cparams = { 
    #'effective_status':['ACTIVE'], 
    'time_range': { 
     'since': threeDaysAgo.__str__(), 
     'until': today.__str__() 
    } 
} 
clist = my_account.get_campaigns(params=cparams) 

Cela me reçoit toutes les campagnes au cours de la plage horaire. Cependant, je n'ai besoin que de ceux qui ont été livrés. Comment fait-on cela?

Répondre

0

J'ai trouvé une façon de le faire - utiliser le bord de l'aperçu.

Voici comment:

fields = [ 
    Insights.Field.campaign_id, 
    Insights.Field.campaign_name, 
    Insights.Field.spend, 
] 

today = datetime.date.today() 
threeDaysAgo = today - timedelta(days=3) 
params = { 
    'time_range': {'since': threeDaysAgo.__str__(), 'until': today.__str__()}, 
    'level': 'campaign', 
    'limit': 100 
} 

insights = my_account.get_insights(fields=fields, params=params) 

Ensuite, nous pouvons boucler sur des idées - pour obtenir la campagne ID:

for i in insights: 
    print "Processing ..." + i['campaign_id'] 
    cid = i['campaign_id'] 

et traiter ensuite la campagne et des données et de quelque façon que nous voulons .. .

campaign = Campaign(cid + "") 

et ...

campaign.remote_read(fields=[ 
      Campaign.Field.name, 
      Campaign.Field.effective_status, 
      Campaign.Field.objective, 
     ]) 

J'espère que ça aide.