Важной особенностью BatchJobService является поддержка использования временных идентификаторов.
Это можно сделать, указав в resource_name нового ресурса отрицательный идентификатор. Например, предположим, вы создаете кампанию и указываете в качестве имени ресурса customers/<YOUR_CUSTOMER_ID>/campaigns/-1 . При создании группы объявлений в последующей операции вы сможете ссылаться на нее по этому имени ресурса, и указанное вами значение -1 будет автоматически заменено фактическим идентификатором созданной кампании.
Вот несколько моментов, которые следует учитывать при использовании временных имен ресурсов:
- Временное имя ресурса можно использовать только после того, как оно будет определено в ресурсе. В следующем примере операция группы объявлений должна располагаться после операции кампании в списке операций.
- Временные имена ресурсов не запоминаются между заданиями или запросами на изменение. Чтобы сослаться на ресурс, созданный в предыдущем задании или запросе на изменение, используйте его фактическое имя.
- Для одного задания или запроса на изменение каждое имя временного ресурса должно содержать уникальное отрицательное число, даже если они относятся к разным типам ресурсов. Если идентификатор временного ресурса используется повторно в одном задании или запросе на изменение, возвращается ошибка.
Пример
Предположим, вы хотите добавить кампанию, группу объявлений и объявление в одном 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"
...
}
}
},
]
Для группы объявлений используется новый временный идентификатор, поскольку мы не можем повторно использовать значение -1 , которое мы использовали для кампании. Мы также ссылаемся на эту группу объявлений при создании объявления для группы объявлений. Сама группа объявлений ссылается на имя ресурса, которое мы установили для кампании в предыдущей операции запроса, в то время как resource_name в ad_group_ad_operation не требуется, поскольку никакая дальнейшая операция на него не ссылается.