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

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