Мощной функцией 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
не является необходимым, поскольку никакая дальнейшая операция не ссылается на него.