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

Временные имена ресурсов

BatchJobService поддерживает временные имена ресурсов, на которые можно ссылаться в последующих операциях в рамках одного и того же пакетного задания, в том числе в нескольких последовательных запросах AddBatchJobOperations загруженных с помощью sequence_token . Это позволяет создавать кампанию и зависимые от нее группы объявлений, объявления и критерии в рамках одного пакетного задания до присвоения идентификаторов на стороне сервера. В следующих общих правилах и примере один запрос ссылается на все BatchJob целиком во всех его загрузках AddBatchJobOperations .

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

Обработка ошибок в пакетных заданиях

Поскольку стандартные операции в пакетном задании выполняются с разрешенным частичным сбоем (за исключением атомарных подпакетов ), если родительский ресурс с временным идентификатором не проходит проверку, любые зависимые дочерние операции, ссылающиеся на этот временный идентификатор, завершаются с ошибкой NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS . Повторное использование одного и того же отрицательного идентификатора в нескольких операциях create в рамках одного пакетного задания возвращает ошибку NewResourceCreationError.DUPLICATE_TEMP_IDS . Временные идентификаторы действительны только при создании ресурсов ( create ) или при ссылке на вновь созданные родительские ресурсы; например, передача отрицательного временного идентификатора в AdGroupCriterionOperation.remove при вызове AddBatchJobOperations возвращает RequestError.RESOURCE_NAME_MALFORMED .

,

Временные имена ресурсов

BatchJobService поддерживает временные имена ресурсов, на которые можно ссылаться в последующих операциях в рамках одного и того же пакетного задания, в том числе в нескольких последовательных запросах AddBatchJobOperations загруженных с помощью sequence_token . Это позволяет создавать кампанию и зависимые от нее группы объявлений, объявления и критерии в рамках одного пакетного задания до присвоения идентификаторов на стороне сервера. В следующих общих правилах и примере один запрос ссылается на все BatchJob целиком во всех его загрузках AddBatchJobOperations .

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

Обработка ошибок в пакетных заданиях

Поскольку стандартные операции в пакетном задании выполняются с разрешенным частичным сбоем (за исключением атомарных подпакетов ), если родительский ресурс с временным идентификатором не проходит проверку, любые зависимые дочерние операции, ссылающиеся на этот временный идентификатор, завершаются с ошибкой NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS . Повторное использование одного и того же отрицательного идентификатора в нескольких операциях create в рамках одного пакетного задания возвращает ошибку NewResourceCreationError.DUPLICATE_TEMP_IDS . Временные идентификаторы действительны только при создании ресурсов ( create ) или при ссылке на вновь созданные родительские ресурсы; например, передача отрицательного временного идентификатора в AdGroupCriterionOperation.remove при вызове AddBatchJobOperations возвращает RequestError.RESOURCE_NAME_MALFORMED .

,

Временные имена ресурсов

BatchJobService поддерживает временные имена ресурсов, на которые можно ссылаться в последующих операциях в рамках одного и того же пакетного задания, в том числе в нескольких последовательных запросах AddBatchJobOperations загруженных с помощью sequence_token . Это позволяет создавать кампанию и зависимые от нее группы объявлений, объявления и критерии в рамках одного пакетного задания до присвоения идентификаторов на стороне сервера. В следующих общих правилах и примере один запрос ссылается на все BatchJob целиком во всех его загрузках AddBatchJobOperations .

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

Обработка ошибок в пакетных заданиях

Поскольку стандартные операции в пакетном задании выполняются с разрешенным частичным сбоем (за исключением атомарных подпакетов ), если родительский ресурс с временным идентификатором не проходит проверку, любые зависимые дочерние операции, ссылающиеся на этот временный идентификатор, завершаются с ошибкой NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS . Повторное использование одного и того же отрицательного идентификатора в нескольких операциях create в рамках одного пакетного задания возвращает ошибку NewResourceCreationError.DUPLICATE_TEMP_IDS . Временные идентификаторы действительны только при создании ресурсов ( create ) или при ссылке на вновь созданные родительские ресурсы; например, передача отрицательного временного идентификатора в AdGroupCriterionOperation.remove при вызове AddBatchJobOperations возвращает RequestError.RESOURCE_NAME_MALFORMED .