使用临时 ID

BatchJobService 的一个强大功能是,它支持使用临时 ID。

为此,您可以指定新资源的 resource_name 以使用负 ID。例如,如果您创建了一个广告系列,并将其资源名称指定为 customers/<YOUR_CUSTOMER_ID>/campaigns/-1,那么当您在以后的操作中创建广告组时,可以通过该资源名称引用它,您指定的 -1 将自动替换为所创建广告系列的实际 ID。

使用临时资源名称时,请注意以下事项:

  • 临时资源名称只有在资源中定义过后才能使用。在以下示例中,广告组操作必须显示在广告系列操作之后,显示在操作列表中。
  • 系统无法跨作业或 mutate 请求记住临时资源名称;要引用在上一个作业或 mutate 请求中创建的资源,请使用其实际资源名称。
  • 对于单个作业或 mutate 请求,每个临时资源名称都必须使用唯一的负数,即使它们来自不同的资源类型也是如此。如果在单个作业或 mutate 请求中重复使用了某个临时 ID,则系统会返回错误。

示例

下面通过一个更具体的示例来说明上述情况,假设您想在单个 API 请求中添加广告系列、广告组和广告。您可以为请求创建一个类似于以下内容的结构:

mutate_operations: [
  {
    campaign_operation: {
      create: {
        resource_name: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1",
        ...
      }
    }
  },
  {
    ad_group_operation: {
      create: {
        resource_name: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2",
        campaign: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1"
        ...
      }
    }
  },
  {
    ad_group_ad_operation: {
      create: {
        ad_group: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2"
        ...
      }
    }
  },
]

请注意,该广告组使用的是一个新的临时 ID,因为我们无法重复使用之前用于该广告系列的 -1,而且我们在创建广告组广告时也会引用该广告组。广告组本身会引用我们在请求前面的操作中为广告系列确定的资源名称,而 ad_group_ad_operation 中的 resource_name 则不需要,因为没有进一步的操作引用它。