使用临时 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 不需要,因为没有进一步的操作引用它。