Проблема с созданием нескольких дополнительных ссылок за один запрос AdGroupFeedService

66 views
Skip to first unread message

treto...@gmail.com

unread,
Mar 21, 2016, 7:00:18 AM3/21/16
to AdWords API Forum
Добрый день! 
Создаю дополнительные ссылки для групп рекламной компании, хочу ускорить процесс, поэтому хочу посылать сразу несколько дополнительных ссылок в запросе на создание. Использую только прямые запросы.
Пример запроса на создание 3 дополнительных ссылок:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v20="https://adwords.google.com/api/adwords/cm/v201601" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<v20:RequestHeader>
<v20:clientCustomerId>ххх-ххх-хххх</v20:clientCustomerId>
<v20:developerToken>ххххххххххххх-хххххх</v20:developerToken>
<v20:userAgent>1cAdWords</v20:userAgent>
<v20:validateOnly>false</v20:validateOnly>
<v20:partialFailure>false</v20:partialFailure>
</v20:RequestHeader>
</soapenv:Header>
<soapenv:Body>
<v20:mutate>

<v20:operations xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<v20:operator>ADD</v20:operator>
<v20:operand>
<v20:feedId>24098551</v20:feedId>
<v20:adGroupId>22845921913</v20:adGroupId>
<v20:matchingFunction>
<v20:operator>IN</v20:operator>
<v20:lhsOperand i:type="ns2:RequestContextOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:contextType>FEED_ITEM_ID</v20:contextType>
</v20:lhsOperand>
<v20:rhsOperand i:type="ns2:ConstantOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:type>LONG</v20:type>
<v20:longValue>3733762978</v20:longValue>
</v20:rhsOperand>
<v20:rhsOperand i:type="ns2:ConstantOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:type>LONG</v20:type>
<v20:longValue>3731967914</v20:longValue>
</v20:rhsOperand>
</v20:matchingFunction>
<v20:placeholderTypes>1</v20:placeholderTypes>
<v20:status>ENABLED</v20:status>
</v20:operand>
</v20:operations>

<v20:operations xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<v20:operator>ADD</v20:operator>
<v20:operand>
<v20:feedId>24098551</v20:feedId>
<v20:adGroupId>22845921913</v20:adGroupId>
<v20:matchingFunction>
<v20:operator>IN</v20:operator>
<v20:lhsOperand i:type="ns2:RequestContextOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:contextType>FEED_ITEM_ID</v20:contextType>
</v20:lhsOperand>
<v20:rhsOperand i:type="ns2:ConstantOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:type>LONG</v20:type>
<v20:longValue>3733762981</v20:longValue>
</v20:rhsOperand>
<v20:rhsOperand i:type="ns2:ConstantOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:type>LONG</v20:type>
<v20:longValue>3731967914</v20:longValue>
</v20:rhsOperand>
</v20:matchingFunction>
<v20:placeholderTypes>1</v20:placeholderTypes>
<v20:status>ENABLED</v20:status>
</v20:operand>
</v20:operations>

<v20:operations xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<v20:operator>ADD</v20:operator>
<v20:operand>
<v20:feedId>24098551</v20:feedId>
<v20:adGroupId>22845921913</v20:adGroupId>
<v20:matchingFunction>
<v20:operator>IN</v20:operator>
<v20:lhsOperand i:type="ns2:RequestContextOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:contextType>FEED_ITEM_ID</v20:contextType>
</v20:lhsOperand>
<v20:rhsOperand i:type="ns2:ConstantOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:type>LONG</v20:type>
<v20:longValue>3733762984</v20:longValue>
</v20:rhsOperand>
<v20:rhsOperand i:type="ns2:ConstantOperand" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201601">
<v20:type>LONG</v20:type>
<v20:longValue>3731967914</v20:longValue>
</v20:rhsOperand>
</v20:matchingFunction>
<v20:placeholderTypes>1</v20:placeholderTypes>
<v20:status>ENABLED</v20:status>
</v20:operand>
</v20:operations>

</v20:mutate>
</soapenv:Body>
</soapenv:Envelope>

В ответ получаю:

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201601">
<requestId>00052e8cb51595580a0ddc86fb096a27</requestId>
<serviceName>AdGroupFeedService</serviceName>
<methodName>mutate</methodName>
<operations>3</operations>
<responseTime>88</responseTime>
</ResponseHeader>
</soap:Header>

<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>[DistinctError.DUPLICATE_ELEMENT @ operations[1].operand, DistinctError.DUPLICATE_ELEMENT @ operations[2].operand]</faultstring>
<detail>
<ApiExceptionFault xmlns="https://adwords.google.com/api/adwords/cm/v201601">
<message>[DistinctError.DUPLICATE_ELEMENT @ operations[1].operand, DistinctError.DUPLICATE_ELEMENT @ operations[2].operand]</message>
<ApplicationException.Type>ApiException</ApplicationException.Type>
<errors xsi:type="DistinctError" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<fieldPath>operations[1].operand</fieldPath>
<trigger/>
<errorString>DistinctError.DUPLICATE_ELEMENT</errorString>
<ApiError.Type>DistinctError</ApiError.Type>
<reason>DUPLICATE_ELEMENT</reason>
</errors>
<errors xsi:type="DistinctError" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<fieldPath>operations[2].operand</fieldPath>
<trigger/>
<errorString>DistinctError.DUPLICATE_ELEMENT</errorString>
<ApiError.Type>DistinctError</ApiError.Type>
<reason>DUPLICATE_ELEMENT</reason>
</errors>
</ApiExceptionFault>
</detail>

</soap:Fault>
</soap:Body>
</soap:Envelope>


Подскажите то я не так делаю? Спасибо...

Yin Niu

unread,
Mar 21, 2016, 11:53:01 AM3/21/16
to AdWords API Forum
Hello, 

It seems like you are trying to add feedItems. You could use FeedItemService for that purpose. 

Thanks,
Yin, AdWords API Team. 

treto...@gmail.com

unread,
Mar 22, 2016, 7:00:08 AM3/22/16
to AdWords API Forum
Я я перд этим использовал FeedItemService для наполнения фида данными.
Потом для создания дополнительных ссылок для группы объявлений я использую полученные feedItemId как показал в первом сообщении.
Для одной дополнительной ссылки это работает, а вот если передавать неколько - нет!

И еще не подскажите как лучше передавать домолнительные ссылки пакетом, т.е. не одну, а по 100 или 1000 за один запрос?
Я отправляю их тысячами - поэтому мне нужно как-то увеличить скорось отправки...

понедельник, 21 марта 2016 г., 17:53:01 UTC+2 пользователь Yin Niu написал:

Yin Niu

unread,
Mar 22, 2016, 10:32:58 AM3/22/16
to AdWords API Forum
Hello, 

Because you passing more than one AdGroupFeedOperation for the same feedId and adGroupId in the same request, the API rejects such requests because one of the operations will overwrite the other.

You can use BatchJobService if you have to send many requests. 

sneus...@treto.ru

unread,
Mar 23, 2016, 12:51:25 PM3/23/16
to AdWords API Forum
Не могли бы Вы дать пример запроса с использованием BatchJobService?

вторник, 22 марта 2016 г., 16:32:58 UTC+2 пользователь Yin Niu написал:

Yin Niu

unread,
Mar 23, 2016, 1:00:56 PM3/23/16
to AdWords API Forum
Hello, 

Depending on the language you use, you can find an example AddCompleteCampaignsUsingBatchJob in CampaignManagement package. 

treto...@gmail.com

unread,
Mar 24, 2016, 7:55:41 AM3/24/16
to AdWords API Forum
Unfortunately you can not use the client library. I need an example of text direct request to the service. I will be grateful if you give an example.

среда, 23 марта 2016 г., 19:00:56 UTC+2 пользователь Yin Niu написал:
Reply all
Reply to author
Forward
0 new messages