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