簡體   English   中英

如何在單個查詢+ Facebook營銷API中獲取所有廣告系列的見解

[英]how to get insights for all campaigns in single query + Facebook marketing api

我想用Python編寫查詢,我希望單個請求中的所有廣告系列性能詳細信息。

如何在Python Query中轉換下面的圖形api請求?

/<version>/act_<ACT_ID>/campaigns?fields=insights.fields(actions_results)

我嘗試使用下面的查詢,但是發送多次向Facebook發送請求是錯誤的想法,並且Facebook阻止用戶30分鍾。

fields = [Insights.Field.cpm,
          Insights.Field.cpp]

class Fb_insights(object):

    def __init__(self, app_id, app_secret, access_token):
        FacebookAdsApi.init(app_id, app_secret, access_token)

        # Add after FacebookAdsApi.init
        me = AdUser(fbid='me')
        self.my_account = me.get_ad_accounts()[0]

    def campaign_reports(self, since, until):
        params = {
           'level': Insights.Level.campaign, 
           'time_range': {
                'since': since,
                'until': until,
            },
        }

        for campaign in self.my_account.get_campaigns():
            for stat in campaign.get_insights(fields=fields,
                                                  params=params):
                print(stat)

不好的是我通過為每個廣告系列調用“get_insights()”來發送請求。

UPDATE

我還試圖直接獲取洞察力,下面的代碼只返回1個廣告系列詳細信息,而我有1個有效廣告系列和87個未投放廣告系列,也更新了level=campaign in params

for insight in self.my_account.get_insights(fields=fields, params=params):
    print insight

查詢:通過使用我的更新代碼,如何使用單個查詢獲取所有已投放和未投放的廣告系列?

請查看https://developers.facebook.com/docs/graph-api/using-graph-api “制作嵌套請求”部分。

通過調用以下api,您可以使用字段擴展在單個查詢帳戶中獲取所有廣告系列的數據分析:

https://graph.facebook.com/v2.10/YOUR_ACCOUNT_ID/campaigns?fields=name,status,insights{reach,impressions,clicks}&access_token=YOUR_TOKEN

字段擴展允許您將字段請求設置為節點。 在上面的示例中,我獲取了按廣告系列分組的帳戶中的所有廣告系列的洞察信息 ,然后使用“洞察信息{覆蓋面,展示次數,點擊次數}”,您可以為節點級別選擇字段。

編輯:從網址中刪除了level =廣告系列,因為由於端點/廣告系列,數據已按廣告系列分組

要在一個請求中獲取所有廣告鏈接,我已使用以下代碼解決了我的問題。

class FB(object):
    def __init__(self):
        me = AdUser(fbid='me')
        self.my_account = me.get_ad_accounts()[0]

    def fb_creativies(self, since, until):
        """
        This function is used to get destination url
        for each creative object
        """
        fields = [AdCreative.Field.object_story_spec]
        params = {
            'time_range': {
                'since': since,
                'until': until,
            },
        }

        return self.my_account.get_ad_creatives(fields=fields, params=params)

我一直在做類似的事情。 我將關卡設置為廣告 - 請參閱示例代碼: http//www.samk3nny.com/getting-ad-insights-from-facebook-and-avoiding-error-17/

然后為每個廣告獲取廣告素材:

ad = Ad(fbid=ad_id)
creatives = ad.get_ad_creatives(fields=[AdCreative.Field.id,
                                        AdCreative.Field.object_story_spec,              
                                        AdCreative.Field.object_story_id])

我在挖掘業務經理時發現了一些facebook圖形API編碼。

添加Facebook圖形前綴

https://graph.facebook.com/v2.8/

隨后是廣告ID(注意廣告ID和廣告創意ID不同)

接下來是這段代碼:

?fields=%5B%22insights.date_preset(lifetime).action_attribution_windows(%5B%5C%22default%5C%22%5D).default_summary(false).fields(%5B%5C%22impressions%5C%22%2C%5C%22reach%5C%22%2C%5C%22frequency%5C%22%2C%5C%22actions%5C%22%5D).limit(5000).summary_action_breakdowns(%5B%5C%22action_type%5C%22%5D)%22%5D

然后添加你的&access_token=WDVW##$Y#%G@$f

它將返回展示次數,覆蓋面,頻次以及按操作類型分隔的操作值列表。

"insights": {"data": [
{
"impressions": "963986",
"reach": "335872",
"frequency": "2.870099",
    "actions": [
        {"action_type": "comment", "value": "133"},
        {"action_type": "like","value": "60"},
        {"action_type": "link_click","value": "4652"},
        {"action_type": "post","value": "76"},
        {"action_type": "post_reaction","value": "516"},
        {"action_type": "unlike","value": "1"},
        {"action_type": "page_engagement","value": "5437"},
        {"action_type": "post_engagement","value": "5377"}
],

"date_start": "2016-05-31",
"date_stop": "2016-06-30"

但您也可以使用Ad Acct ID ,然后使用過濾按Ad ID進行過濾,以便在一個帳戶ID下一次顯示多個廣告。

例如: https//graph.facebook.com/v2.8/YOURADACCOUNTID?fields上面的代碼,然后是下面的代碼。

_ENTERADIDHERE_替換為您的廣告ID,一次提取多個。

&filtering=%5B%7B%22field%22%3A%22ad.id%22%2C%22operator%22%3A%22IN%22%2C%22value%22%3A%5B%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%2C%22_ENTERADIDHERE_%22%5D%7D%5D

希望這有助於讓某人繼續前進。

不知道你是否還需要它。

主要解決方案是在廣告級別調用洞察力。 這限制了API調用的數量。 只需在代碼中添加一行:

class Fb_insights(object):

    def __init__(self, app_id, app_secret, access_token):
        FacebookAdsApi.init(app_id, app_secret, access_token)

        # Add after FacebookAdsApi.init
        me = AdUser(fbid='me')
        self.my_account = me.get_ad_accounts()[0]

    def campaign_reports(self, since, until):
        params = {
            'level': 'ad',
            'date_preset': 'lifetime',
            'fields': ['account_id',
                'account_name',
                'actions',
                'ad_id',
                'ad_name',
                'adset_id',
                'adset_name',

                                        ]
        }
        insights = account.get_insights(params=params)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM