ID

大多数 Google Ads 实体都会公开一个 getId() 方法,用于返回其标识符。虽然在大多数情况下并非严格必要,但 ID 在以下情况下可能会派上用场:

处理报告
ID 提供了一种将报告行与实际 Google Ads 实体相关联的好方法。
维护与外部数据存储区的映射
您可能已在自己的数据库中存储了基于 ID 的信息。
寻求性能方面的提升

通过 ID 来抓取通常要比其他方法更快。抓取单个实体的代码也稍微简单一些:

let campaigns = AdsApp.campaigns()
   .withIds([678678])
   .get();
// versus
let campaigns = AdsApp.campaigns()
   .withCondition("Name='My Campaign'")
   .get();

唯一性

广告系列 ID 和广告组 ID 是唯一的:任何两个广告系列或广告组都不会共享同一个 ID。不过,广告和关键字具有复合 ID:关键字的唯一标识符是其广告组 ID 和关键字 ID 的组合。 同样,广告的唯一标识符是其广告组 ID 和广告 ID 的组合。这会影响 selector.withIds() 的调用方式。

对于广告系列和广告组,selector.withIds() 需要一个数字数组:

let ids = [123123, 234234, 345345];
let campaignSelector = AdsApp.campaigns().withIds(ids);

不过,对于广告和关键字,selector.withIds() 需要一个包含两个元素的数组的数组,其中第一个元素是广告组 ID。以下代码段从广告组中检索三个关键字:

let adGroupId = 123123;
let keywordSelector = AdsApp.keywords().withIds([
    [adGroupId, 234234],
    [adGroupId, 345345],
    [adGroupId, 456456]
]);

抓取广告时,也适用相同的结构。

临时 ID

在使用包含多个操作的 mutate 请求 时,您有时需要使用 临时 ID 将 资源相互关联,因为在您获得 API 响应之前,完整资源名称将不可用。临时 ID 必须是以 -1 开头的负数,并且不能在同一 mutate 请求中重复。为了有效地使用临时 ID,您必须编写一些代码来确保不会创建重复的临时 ID:

let nextId = -1;

function getNextTempId() {
    const ret = nextId;
    nextId -= 1;
    return ret;
}

getNextTempId 的每次后续调用都会返回一个比上一次调用返回的数字小 1 的数字。由于所有临时 ID 都必须是负数,因此请从 -1 开始。

系统不会跨作业或 mutate 请求记住临时 ID。如需引用在之前的 mutate 请求中创建的资源,请使用其真实资源名称。