Facebook Graph API - 获取每个广告集的每日支出

Ain*_*ine 3 php facebook facebook-graph-api facebook-marketing-api facebook-graph-api-v2.4

我正在尝试为每个广告帐户设置每个广告的每日费用.我们在Facebook上花了很多钱,而金融希望看到它的发展方向.基本上,我每天都在寻找昨天每套广告的花费.问题是,有很多广告集.

我试图分两部分来做这件事.首先从Graph API获取广告集ID.然后使用Marketing API获取支出.

1.图形API(v.2.4)

我收到了所有广告集的列表.我不能在一次通话中这样做,因为有很多结果(超过九页).

GET/v2.4/me/adaccounts?fields=name,adcampaign_groups{id,name,campaign_group_status,account_id,adcampaigns{id,name}}
Run Code Online (Sandbox Code Playgroud)

2.营销API

为了获得昨天的支出,我正在为每个广告集调用Marketing 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'];
}
Run Code Online (Sandbox Code Playgroud)

由于我有很多广告集,所以在我获得所需数据之前很久就达到了我的小跑限制.

有没有办法在一次通话中获取此信息?如果没有,我可以在较少的电话中从Marketing API获取支出数据吗?

如果有帮助,我很高兴更新到Graph API v2.5.我正在使用作曲家库:

facebook/php-sdk-v4: ~5.0
facebook/php-ads-sdk: 2.4.*
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 8

没有必要在adset级别上执行此操作.通过调用Ad Insights API,您可以为定义的对象级别的数据指定特定的聚合.鉴于您已从/me/adaccounts端点提取广告帐户,您应该可以执行以下操作:

1.图形API请求

Graph API资源管理器中的以下请求或通过cURL(均已提供)应该返回整个帐户的支出:

1A.图表URL

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

1B.卷曲

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
Run Code Online (Sandbox Code Playgroud)

2. Marketing API SDK

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

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

$account->getInsights(array(), $params);
Run Code Online (Sandbox Code Playgroud)

我相信以上内容应该对你有帮助.我已经使用1a和1b进行了测试,它运行良好,但尚未完全测试2.