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
则不是必需的,因为没有进一步的操作会引用它。