如何使用 API 从广告中获取 Facebook post ID?
How to get Facebook post ID from an ad using API?
我对自己构建的 Facebook 广告报告工具非常满意。
它列出了一个广告帐户中的所有广告系列、每个广告系列中的所有广告集以及每个广告集中的所有广告。
它显示了我关心的指标。
但我一直无法弄清楚如何从广告中检索 Post ID。
似乎 Insights 边缘中没有提到该字段(在 InsightsFields
中不可用),所以也许我必须在另一个 [=39] 上做一个 "join" =] 呼叫.
我检索见解的主要代码是:
public function getInsights($levelType, $id, $aggLevel, $start, $end) {
if ($levelType) {
if ($id == null) {
abort(500, 'You must provide the ID for the object you want to retrieve.');
}
} else {
$levelType = \AdAccount::class;
$id = ACT_PREPEND . $this->fbConfig['account_id'];
$aggLevel = AdsInsightsLevelValues::CAMPAIGN;
}
$variableClassWithNamespace = '\FacebookAds\Object\' . $levelType;
$level = new $variableClassWithNamespace($id);
$fields = [
InsightsFields::CAMPAIGN_ID,
InsightsFields::CAMPAIGN_NAME,
InsightsFields::ADSET_ID,
InsightsFields::ADSET_NAME,
InsightsFields::AD_ID,
InsightsFields::AD_NAME,
InsightsFields::SPEND,
InsightsFields::UNIQUE_IMPRESSIONS,
InsightsFields::INLINE_LINK_CLICKS,
InsightsFields::INLINE_LINK_CLICK_CTR,
InsightsFields::COST_PER_INLINE_LINK_CLICK,
InsightsFields::ACTIONS,
InsightsFields::COST_PER_ACTION_TYPE,
InsightsFields::CPM,
];
$params = [
AdReportRunFields::LEVEL => $aggLevel,
];
if ($start) {
$params[AdReportRunFields::TIME_RANGE]['since'] = $start;
if (!$end) {
$params[AdReportRunFields::TIME_RANGE]['until'] = (new \DateTime("+2 year"))->format('Y-m-d');
}
}
if ($end) {
$params[AdReportRunFields::TIME_RANGE]['until'] = $end;
if (!$start) {
$params[AdReportRunFields::TIME_RANGE]['since'] = (new \DateTime("-1 year"))->format('Y-m-d');
}
}
if (!$start && !$end) {
$params[AdReportRunFields::DATE_PRESET] = InsightsPresets::LIFETIME;
}
$insights = $level->getInsights($fields, $params);
return $insights->getResponse()->getBody();
}
所以,至少,我想回答这个简单的问题:假设我拥有所有必需的 API 权限(我当然有),给定一个广告 ID,如何检索该广告中的 "post" 的 ID?
理想情况下,我想回答的是:如何在一个 API 查询中检索 Post ID,因为我正在检索我想要的所有见解(如图所示)以上)?
谢谢!
问题是 post ID 是一个基本的广告参数,而不是您从洞察中获得的每日价值。这就是为什么在洞察端点上的任何地方都找不到它的原因。
假设您知道所有广告 ID,您可以一次查询所有广告 ID(单个请求的数量可能有一些未记录的限制),如下所示:
/v2.8/?ids=6068303632680,6074066638080&fields=creative{effective_object_story_id}
这实际上是执行这两个查询的快捷方式
/v2.8/6068303632680?fields=creative{effective_object_story_id}
/v2.8/6074066638080?fields=creative{effective_object_story_id}
您可以在 多 ID 读取请求
部分找到有关高级 API 用法 here in FB docs 的更多信息
如果您想 link Facebook 广告 ID 到 Facebook 视频 ID,您可以使用类似的查询。
/v2.9/6087224935451?fields=creative{ name, title, video_id, status }
结果:
{
"creative": {
"name": "Ad from a Page post 24",
"video_id": "745639641594227",
"status": "ACTIVE",
"id": "6087045300251"
},
"id": "6087224935451"
}
我对自己构建的 Facebook 广告报告工具非常满意。
它列出了一个广告帐户中的所有广告系列、每个广告系列中的所有广告集以及每个广告集中的所有广告。
它显示了我关心的指标。
但我一直无法弄清楚如何从广告中检索 Post ID。
似乎 Insights 边缘中没有提到该字段(在 InsightsFields
中不可用),所以也许我必须在另一个 [=39] 上做一个 "join" =] 呼叫.
我检索见解的主要代码是:
public function getInsights($levelType, $id, $aggLevel, $start, $end) {
if ($levelType) {
if ($id == null) {
abort(500, 'You must provide the ID for the object you want to retrieve.');
}
} else {
$levelType = \AdAccount::class;
$id = ACT_PREPEND . $this->fbConfig['account_id'];
$aggLevel = AdsInsightsLevelValues::CAMPAIGN;
}
$variableClassWithNamespace = '\FacebookAds\Object\' . $levelType;
$level = new $variableClassWithNamespace($id);
$fields = [
InsightsFields::CAMPAIGN_ID,
InsightsFields::CAMPAIGN_NAME,
InsightsFields::ADSET_ID,
InsightsFields::ADSET_NAME,
InsightsFields::AD_ID,
InsightsFields::AD_NAME,
InsightsFields::SPEND,
InsightsFields::UNIQUE_IMPRESSIONS,
InsightsFields::INLINE_LINK_CLICKS,
InsightsFields::INLINE_LINK_CLICK_CTR,
InsightsFields::COST_PER_INLINE_LINK_CLICK,
InsightsFields::ACTIONS,
InsightsFields::COST_PER_ACTION_TYPE,
InsightsFields::CPM,
];
$params = [
AdReportRunFields::LEVEL => $aggLevel,
];
if ($start) {
$params[AdReportRunFields::TIME_RANGE]['since'] = $start;
if (!$end) {
$params[AdReportRunFields::TIME_RANGE]['until'] = (new \DateTime("+2 year"))->format('Y-m-d');
}
}
if ($end) {
$params[AdReportRunFields::TIME_RANGE]['until'] = $end;
if (!$start) {
$params[AdReportRunFields::TIME_RANGE]['since'] = (new \DateTime("-1 year"))->format('Y-m-d');
}
}
if (!$start && !$end) {
$params[AdReportRunFields::DATE_PRESET] = InsightsPresets::LIFETIME;
}
$insights = $level->getInsights($fields, $params);
return $insights->getResponse()->getBody();
}
所以,至少,我想回答这个简单的问题:假设我拥有所有必需的 API 权限(我当然有),给定一个广告 ID,如何检索该广告中的 "post" 的 ID?
理想情况下,我想回答的是:如何在一个 API 查询中检索 Post ID,因为我正在检索我想要的所有见解(如图所示)以上)?
谢谢!
问题是 post ID 是一个基本的广告参数,而不是您从洞察中获得的每日价值。这就是为什么在洞察端点上的任何地方都找不到它的原因。
假设您知道所有广告 ID,您可以一次查询所有广告 ID(单个请求的数量可能有一些未记录的限制),如下所示:
/v2.8/?ids=6068303632680,6074066638080&fields=creative{effective_object_story_id}
这实际上是执行这两个查询的快捷方式
/v2.8/6068303632680?fields=creative{effective_object_story_id}
/v2.8/6074066638080?fields=creative{effective_object_story_id}
您可以在 多 ID 读取请求
部分找到有关高级 API 用法 here in FB docs 的更多信息如果您想 link Facebook 广告 ID 到 Facebook 视频 ID,您可以使用类似的查询。
/v2.9/6087224935451?fields=creative{ name, title, video_id, status }
结果:
{
"creative": {
"name": "Ad from a Page post 24",
"video_id": "745639641594227",
"status": "ACTIVE",
"id": "6087045300251"
},
"id": "6087224935451"
}