2014-11-04 37 views
3

我正在嘗試使用Facebook的ads-api獲取有關指定時間範圍內的廣告帳戶/廣告系列/等的數據。使用python sdk過濾來自facebook ads api的統計數據

直到現在我設法使用官方的Python sdk, 得到整體信息(下面添加),但我無法弄清楚如何插入時間過濾條件。

答案可能是在這裏下的「過濾結果」,但我不知道該怎麼翻譯,他們正在做那裏蟒蛇什麼...... https://developers.facebook.com/docs/reference/ads-api/adstatistics/v2.2

我真的很感激任何幫助,您可以提供,

謝謝!


這是相關模塊(我認爲),從官方的Python SDK項目: https://github.com/facebook/facebook-python-ads-sdk/blob/master/facebookads/objects.py

我當前的代碼是:

from facebookads.session import FacebookSession 
from facebookads.api import FacebookAdsApi 
from facebookads import objects 
from facebookads.objects import (
AdUser, 
AdCampaign, 
) 

my_app_id = 'APP_ID' 
my_app_secret = 'AP_SECRET' 
my_access_token = 'ACCESS_TOKEN' 
my_session = FacebookSession(my_app_id, my_app_secret, my_access_token) 
my_api = FacebookAdsApi(my_session) 
FacebookAdsApi.set_default_api(my_api) 

me = objects.AdUser(fbid='me') 
my_accounts = list(me.get_ad_accounts()) 


my_account=my_accounts[1] 

print(">>> Campaign Stats") 
for campaign in my_account.get_ad_campaigns(fields=[AdCampaign.Field.name]): 
    for stat in campaign.get_stats(fields=[ 
     'impressions', 
     'clicks', 
     'spent', 
     'unique_clicks', 
     'actions', 
    ]): 
     print(campaign[campaign.Field.name]) 
    for statfield in stat: 
     print("\t%s:\t\t%s" % (statfield, stat[statfield]))  

和輸出我得到的是(全部大寫和xxxx是我的):

Campaign Stats 
CAMPAIGN_NAME1 
    impressions:  xxxx 
    unique_clicks:  xxxx 
    clicks:  xxxx 
    actions:  {u'mobile_app_install': xxxx, u'app_custom_event': xxxx, u'app_custom_event.fb_mobile_activate_app': xxx} 
    spent:  xxxx 
CAMPAIGN_NAME2 
    impressions:  xxxx 
    unique_clicks:  xxxx 
    clicks:  xxxx 
    actions:  {XXXX} 
    spent:  xxxx 

回答

3

get_stats()方法有一個名爲params的附加參數,您可以在其中傳入start_time和/或end_time

params_data = { 
    'start_time': 1415134405, 
} 

stats = campaign.get_stats(
    params=params_data, 
    fields=[ 
     'impressions', 
     'clicks', 
     ... 
    ] 
) 

for stat in stats: 
    ... 

的API接受了許多這裏記錄不同的參數:https://developers.facebook.com/docs/reference/ads-api/adstatistics

更多選讀

其原因既有params參數和fields參數需要一些解釋。如果您不感興趣,請隨時忽略此內容。 :)

params參數的執行基本上只是構建了API調用查詢字符串:

params['start_time'] = 1415134405 

創建:

?start_time=1415134405 

的廣告API端點通常接收fields參數來定義你想要返回什麼數據:

?fields=impressions,clicks&start_time=1415134405 

你正確定義,但因爲它只是fields查詢字符串,你也可以在技術上做到這一點:

params['fields'] = 'impressions,clicks' 

get_stats()(和其他讀法)中的字段參數僅僅是一個簡單的方法來定義這個字段參數。實現如下所示:

def remote_read(self, params=[], fields=[]): 
    ... 
    params['fields'] = fields 
    ... 
+0

它的工作!謝謝!! – PandaZ 2014-11-05 09:17:47

+0

嗨〜你知道start_time返回的動作是什麼意思嗎?這是否意味着行動發生在start_time之後,謝謝 – linpingta 2015-01-19 16:12:54

0

API的V2.4版本中不推薦使用「get_stats」方法。

應該使用「get_insights」方法。該方法的參數在下面的頁面上顯示: https://developers.facebook.com/docs/marketing-api/insights/v2.5

從上面的頁面中,「start_time」和「end_time」的替換是「time_ranges」屬性。例如:

"time_ranges": {'since': '2015-01-01', 'until': '2015-01-31'} 
相關問題