API 结构

视频:观看 2019 年研讨会上的“服务和资源”讲座

本指南介绍了 Google Ads API 的主要构成组件。Google Ads API 由多个资源和服务组成。资源表示 Google Ads 实体,而服务用于检索和处理 Google Ads 实体。

对象层次结构

Google Ads 账号可以视为一个对象层次结构。

广告系列模型

  • 账号的顶级资源是 customer。

  • 每个客户都包含一个或多个有效广告系列。

  • 每个广告系列都包含一个或多个广告组,用于将广告分组为逻辑集合。

  • 广告组广告表示您正在投放的广告。除了每个广告组只能包含一个广告组广告的应用广告系列之外,每个广告组都包含一个或多个广告组广告。

您可以向广告组或广告系列添加一个或多个 AdGroupCriterion 或 CampaignCriterion。这些条件用于定义广告的触发方式。

有多种条件类型,例如关键字、年龄段和地理位置。在广告系列一级定义的条件会影响广告系列中的所有其他资源。您还可以指定广告系列级预算和日期。

最后,您可以在账号、广告系列或广告组级附加素材资源。 借助素材资源,您可以为广告提供额外的信息,例如电话号码、街道地址或促销信息。请参阅素材资源概览。

资源

资源表示 Google Ads 账号中的实体。Campaign 和 AdGroup 是两个资源示例。

对象 ID

Google Ads 中的每个对象都有自己的 ID。其中一些 ID 在所有 Google Ads 账号中都是全局唯一的,而另一些 ID 仅在限定范围内是唯一的。

对象 ID 唯一性范围 是否全局唯一?
预算 ID 全局 是
广告系列 ID 全局 是
AdGroup ID 全局 是
广告 ID 广告组 否,但 (AdGroupId, AdId) 对是全局唯一的
AdGroupCriterion ID 广告组 否,但 (AdGroupId, CriterionId) 对是全局唯一的
CampaignCriterion ID 广告系列 否,但 (CampaignId, CriterionId) 对是全局唯一的
标签 ID 客户 否,但 (CustomerId, LabelId) 对是全局唯一的
用户名单 ID 全球 是
资产 ID 全球 是

在为 Google Ads 对象设计本地存储时,这些 ID 规则可能会很有用。

某些对象可用于多种实体类型。在这种情况下,对象包含一个描述其内容的 type 字段。例如,AdGroupAd 可以指文字广告、酒店广告或本地广告等对象。可以通过 AdGroupAd.ad.type 字段访问此值,并返回 AdType 枚举中的值。

资源名称

每个资源都由一个 resource_name 字符串进行了唯一标识,该字符串会将相应资源及其父项连接到路径中。例如,广告系列资源名称的格式如下:

customers/customer_id/campaigns/campaign_id

因此,在客户 ID 为 1234567 的 Google Ads 账号中,对于 ID 为 987654 的广告系列,resource_name 将是:

customers/1234567/campaigns/987654

服务

服务可让您检索和修改 Google Ads 实体。服务分为三种类型:修改服务、对象和统计信息检索服务以及元数据检索服务。

修改 (mutate) 对象

此类服务使用 mutate 请求修改关联资源类型的实例。此外,它们还提供用于检索单个资源实例的 get 请求,这对于分析资源的结构非常有用。

服务示例:

每个 mutate 请求都必须包含相应的 operation 对象。例如,CampaignService.MutateCampaigns 方法需要一个或多个 CampaignOperation 实例。如需详细了解操作,请参阅更改和检查对象。

并发转变

不能同时由多个来源并行修改 Google Ads 对象。如果您有多个用户使用您的应用更新同一对象,或者您使用多个线程并行更改 Google Ads 对象,则可能会导致出现错误。这包括从同一应用中的多个线程更新对象,或从不同的应用(例如,您的应用和同时进行的 Google Ads 界面会话)更新对象。

该 API 不提供在更新之前锁定对象的方法;如果两个来源尝试同时更改某个对象,该 API 会引发 DatabaseError.CONCURRENT_MODIFICATION_ERROR。

异步突变与同步突变

Google Ads API mutate 方法是同步的。API 调用仅在对象发生变异后返回响应,因此您需要等待每个请求的响应。虽然这种方法在编码方面相对简单,但如果进程被迫等待调用完成,可能会对负载平衡产生负面影响并浪费资源。

另一种方法是使用 BatchJobService 异步更改对象,该方法可对多个服务执行批量操作,而无需等待这些操作完成。提交批量作业后,Google Ads API 服务器会异步执行操作,从而释放进程以执行其他操作。您可以定期检查作业状态,以了解作业是否已完成。

如需详细了解异步处理,请参阅批处理指南。

转变验证

大多数 mutate 请求都可以进行验证,而无需针对实际数据执行调用。您可以测试缺少参数和字段值不正确的请求,而无需实际执行操作。

如需使用此功能,请将请求的可选 validate_only 布尔值字段设置为 true。然后,系统会像要执行请求一样对请求进行全面验证,但会跳过最终执行。如果未发现任何错误,则返回空响应。如果验证失败,响应中的错误消息会指明失败点。

validate_only 在测试广告是否存在常见违规问题时特别有用。如果广告违反了相关政策(例如包含特定字词、标点符号、大写字母或长度不符合要求),则会被自动拒登。一条不良广告可能会导致整个批次失败。在 validate_only 请求中测试新广告可以发现任何此类违规行为。请参阅处理政策违规错误的代码示例,了解此功能的应用。

获取对象和效果统计信息

GoogleAdsService 是一项统一的服务,用于同时检索对象和效果统计信息。

所有针对 GoogleAdsService 的 Search 和 SearchStream 请求都需要一个查询,以指定要查询的资源、要检索的资源属性和效果指标、用于过滤请求的谓词,以及用于进一步细分效果统计信息的细分。如需详细了解查询格式,请参阅 Google Ads 查询语言指南。

检索元数据

GoogleAdsFieldService 用于检索有关 Google Ads API 中资源的元数据,例如资源的可用属性及其数据类型。

此服务提供了构建 GoogleAdsService 查询所需的信息。为方便起见,字段参考文档中也提供了 GoogleAdsFieldService 返回的信息。