Использование временных идентификаторов

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