BatchJobService 的一项强大功能是,
它支持使用临时 ID。
为此,您可以指定新资源的 resource_name 使用负 ID。例如,假设您创建了一个广告系列,并将其资源名称
指定为 customers/<YOUR_CUSTOMER_ID>/campaigns/-1。那么在以后的操作中创建广告组时,就可以通过该资源名称进行引用,而您指定的
-1 会被自动替换为已制作广告系列的实际 ID。
使用临时资源名称时,请注意以下事项:
- 临时资源名称只能在资源中定义后使用。在以下示例的操作列表中,广告组操作必须显示在广告系列操作之后。
- 系统无法跨作业或变动请求记住临时资源名称。 如需引用在之前的作业或变动请求中创建的资源,请使用其真实资源名称。
- 对于单个作业或变动请求,每个临时资源名称都必须使用具有唯一性的负数,即使它们来自不同的资源类型。如果在单个作业或变动请求中重复使用临时 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 则不是必需的,因为没有其他操作引用它。