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

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