投放中的广告对象可能具有下列状态:
ACTIVE
PAUSED
PENDING_REVIEW
CREDIT_CARD_NEEDED
PREAPPROVED
DISABLED
PENDING_PROCESS
WITH_ISSUES
将广告对象的 status
字段设置为 ARCHIVED
,即可将其状态设置为 ARCHIVED
。将对象状态设置为 ARCHIVED
后,您仍然可以根据对象编号查询详细信息和统计数据。您可以存档的对象数量设有上限。因此,您应遵从此上限,将不再需要的对象的状态更改为 DELETED
。
状态为 ARCHIVED
的对象只有两个可供更改的字段,即 name
和 status
。您也仅可将 status
更改为 DELETED
。
如要将广告对象设置为 DELETED
,您可以将 status
字段设置为 DELETED
,或向该对象发送 HTTP DELETE
请求。将对象的状态设置为 DELETED
后,您无法再将其恢复为 ARCHIVED
。
如果您有保留已删除对象的编号,则仍然可以通过查询该对象编号来检索其统计数据或详细信息。可是,您无法利用未删除的节点或对象检索要用作连接对象的已删除对象。例如,虽然 <API_VERSION>/<AD_ID>/insights
适用于已删除的对象,但 <API_VERSION>/act_<AD_ACCOUNT_ID>/insights?level=ad
不会返回已删除对象的统计数据。
即使删除广告,系统仍会在其最后一个投放日之后的 28 天内追踪其展示次数、点击量和操作次数。您可以使用 ad.effective_status
筛选条件来查询 DELETED
对象的成效分析。
如果您的广告组内包含两条广告,而您删除了其中一条,则以下两个查询返回的结果会有所不同:
https://graph.facebook.com/v21.0
/<AD_SET_ID>/insights https://graph.facebook.com/v21.0
/<AD_ID>/insights
广告组返回的统计数据中包括其中已删除和未删除的广告资料。但在查询广告组中的广告时,您只会看见一条广告:
https://graph.facebook.com/v21.0
/<AD_SET_ID>/ads
为避免出现这种情况,您应该在广告停止投放 28 天后再将其删除,以确保统计数据不再继续更改。此外,在删除这些对象之前,您还应先将它们的统计数据或编号存储至自己的系统。若发生以下情况,您不一定要遵循此建议:
除 name
外,您不能更改 DELETED
对象的任何字段。
管理对象状态通常包括以下几种情况:
deleted
,以使归档数量低于限制。在广告对象架构中,广告对象状态的运作方式如下:
with_issues
、paused
、archived
或 deleted
,该广告系列下的所有对象均将自动更改为相同状态。 deleted
,除非明确指定对象编号,否则您将无法检索该广告系列下的广告组或广告。with_issues
、paused
、archived
或 deleted
,包含该广告的广告组或广告系列仍将保持原有状态,并可供检索。下列限制适用于给定广告账户的 ARCHIVED
对象:
如果您读取 archived
连线,则需要专门筛选出已归档对象,因为我们默认不会返回这些对象。如果您读取某个广告对象的统计数据,无论子对象的状态是 active
、archived
还是 deleted
,我们将列出所有子对象的统计数据。因此,您无需筛选子对象的成效分析。
状态为 ACTIVE
和 PAUSED
的对象与状态为 ARCHIVED
和 DELETED
的对象有所不同。它们的主要区别如下。
查询 | 投放中 | 已归档 | 已删除 |
---|---|---|---|
存在于数据库中 | 是 | 是 | 是 |
每个广告帐户的最大数量 | 100,000 | 无上限 | |
以连线查询(不含筛选条件) | 是 | 否 | 否 |
使用状态筛选条件查询连线 | 如果筛选条件包含对象的状态,则为是 | 如果状态筛选条件包含 | 如果状态筛选条件不包含 |
以自身编号查询 | 是 | 是 | 是 |
统计数据汇总于 | 是 | 是 | 是 |
统计数据包含在 | 是 | 否 | 否 |
统计数据包含在 | 如果筛选条件包含对象的状态,则为是 | 如果筛选条件包含对象的状态,则为是 | 否 |
通过 | 是 | 是 | 是 |
状态可以更改为 | 任何有效状态 |
| 无法更改 |
如要将广告状态更改为已归档:
use FacebookAds\Object\Ad;
$ad = new Ad(<AD_ID>);
$ad->archive();
from facebookads.adobjects.ad import Ad
ad = Ad(ad_id)
ad.remote_archive()
new Ad(<AD_ID>, context).update()
.setStatus(Ad.EnumStatus.VALUE_ARCHIVED)
.execute();
curl \
-F 'status=ARCHIVED' \
-F 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_ID>
如要删除广告:
use FacebookAds\Object\Ad;
$ad = new Ad(<AD_ID>);
$ad->deleteSelf();
from facebookads.adobjects.ad import Ad
ad = Ad(<AD_ID>)
ad.remote_delete()
new Ad(<AD_ID>, context).update()
.setStatus(Ad.EnumStatus.VALUE_DELETED)
.execute();
curl -X DELETE \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v2.11/<AD_ID>/
如要检索投放中对象的投放中子对象,例如广告系列中的所有投放中广告(不包括 ARCHIVED
或 DELETED
广告):
curl -X GET \
-d 'fields="name"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_CAMPAIGN_ID>/ads
如要检索投放中对象的 ARCHIVED
子对象(例如广告组中的所有 ARCHIVED
广告),则须使用状态筛选条件:
curl -X GET \
-d 'effective_status=[
"ARCHIVED"
]' \
-d 'fields="name"' \
-d 'access_token=<ACCESS_TOKEN>' \
https://graph.facebook.com/v21.0/<AD_CAMPAIGN_ID>/ads