Facebook图谱API - 获取每个广告组的每日支出

8
我正在尝试获取所有广告账户的每日广告组花费。我们正在与Facebook投放大量资金,财务部门想要知道资金去向。 基本上,我每天都在寻找昨天每个广告组的花费。问题是,有很多广告组。
我试图分两步进行。首先从Graph API获取广告组ID。然后使用Marketing API获取花费。
1. Graph API(v.2.4)
我正在获取我们拥有的所有广告组列表。由于结果太多(超过9页),我无法在一次调用中完成此操作。
GET/v2.4/me/adaccounts?fields=name,adcampaign_groups{id,name,campaign_group_status,account_id,adcampaigns{id,name}}

2. 营销API

为了获取昨天的花费,我正在针对每个广告集调用营销API。以下是我所使用的PHP代码:

// Get spend for yesterday
$adSet = new \FacebookAds\Object\AdSet($adSetId);
$params = array(
    'date_preset' => InsightsPresets::YESTERDAY,
);
/** @var Cursor $insights */
$insights = $adSet->getInsights(array('spend'), $params);
$insights->rewind();
$spend = 0;
if ($insights->current() != false) {
    $spend = $insights->current()->getData()['spend'];
}

由于我的广告组很多,所以在获取所需数据之前我就已经达到了我的请求限制。

有没有办法一次性获取所有信息?如果不行,能否通过更少的调用从营销API中获取支出数据?

如果有帮助,我愿意升级到Graph API v2.5。 我正在使用composer库:

facebook/php-sdk-v4: ~5.0
facebook/php-ads-sdk: 2.4.*

感谢您的选择。
2个回答

13

在广告组级别上做这个没必要。通过调用广告洞察 API,您可以指定在定义的对象级别上的特定聚合数据。假设您已经从 /me/adaccounts 终端点获取了您的广告账户,那么您应该能够执行以下操作:

1. Graph API 请求

在 Graph API 浏览器中或通过 cURL 发送以下请求(两者都提供),可以返回整个账户的花费:

1a. Graph URL

https://graph.facebook.com/<VERSION>/act_<ACCOUNT_ID>/insights?fields=spend&level=account&date_preset=yesterday&access_token=<ACCESS_TOKEN>

1b. cURL

curl -G \
-d 'level=account' \
-d 'fields=spend' \
-d 'date_preset=yesterday' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/<VERSION>/act_<ACCOUNT_ID>/insights

2. 营销 API SDK

$account = new AdAccount('act_<Ad_ACCOUNT_ID>');

$params = array(
  'level' => 'account',
  'date_preset' => InsightsPresets::YESTERDAY,
  'fields' => 'spend',
);

$account->getInsights(array(), $params);

我相信上述内容可以帮到你。我已经测试了1a和1b,它们完美运作,但是2还没有进行完全测试。


很遗憾,账户想要看到每个广告组的结果。在我不断撞墙之后,现在我正在使用图形 API 来获取到目前为止的总花费,并计算每天的差异 - me/adaccounts?fields=name,campaigns{id,name,adsets{id,name,insights{spend}}}。 - Aine
即使指定了日期范围或预设,它仍会返回迄今为止广告的花费,而不是在指定日期范围内的。这让我很疯狂。有什么想法吗?我正在使用Python。 - LucyTurtle
@LucyTurtle,你找到解决方案了吗?我现在正在处理这个问题 :/ - Alejandro Viquez
1
@AlejandroViquez 你具体在寻找什么?可以看看我在这个问题上的回答:https://dev59.com/slYN5IYBdhLWcg3wLFmI - LucyTurtle

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接