Hi Dannison,

Sorry but I still don't get it.
The name field should be the column name, for type STRING, I can pass any 
random name and the column gets appropriately labeled with that name on 
Google Ads.
I'm pretty sure that the same is supposed to happen also with type FLOAT or 
other types. Why I would want to name a column with an integer name? The 
value, however, must be an integer if I set the type as INT64, that does 
make sense.

As a very minimal example you could try to make this request:

ad_customizer_feed_service = client.GetService("AdCustomizerFeedService", 
version='v201809')
customizer_feed = { 
                    'feedName': 'feed name xyz', 
                    'feedAttributes': [{'type': 'STRING', 'name': 'this is 
the column name'}]} 
feed_service_operation = {'operator': 'ADD', 'operand': customizer_feed} 
response = ad_customizer_feed_service.mutate([feed_service_operation]) 


if response and 'value' in response: r = "VALID: {}".format(response)  
else: r = "NOT VALID: {}".format(response) 


return r




This correctly returns:
VALID: { 'ListReturnValue.Type': 'AdCustomizerFeedReturnValue', 'value': [ 
{ 'feedId': 85XXXXX, 'feedName': 'feed name xyz', 'feedStatus': 'ENABLED', 
'feedAttributes': [ { 'id': 1, 'name': 'this is the column name', 'type': 
'STRING' } ] } ] }

*Now if I try to submit a column with type INT64:*

 ad_customizer_feed_service = client.GetService("AdCustomizerFeedService", 
version='v201809')
 customizer_feed = {
 'feedName': 'feed name xyz 2',
 'feedAttributes': [{'type': 'INT64', 'name': 'this is the column name 2'}]
}
 feed_service_operation = {'operator': 'ADD', 'operand': customizer_feed}
 response = ad_customizer_feed_service.mutate([feed_service_operation])


 if response and 'value' in response: r = "VALID: {}".format(response)
 else: r = "NOT VALID: {}".format(response)


 print(r)
 return r

This gives me the following error:
googleads.errors.GoogleAdsServerFault: [RequiredError.REQUIRED @ operations[
0].operand.feedAttributes[0].type]


I've tried to use an integer as the name but that also didn't work. I'm 
pretty sure that the request above is supposed to work just like that. 
Could someone try to make the same request and see why is not working? I 
would really need this to work.

This is the full SOAP logs of the failed (the second) request:


[2018-12-05 12:39:41,601 - googleads.soap - INFO] Request made: Service: 
"AdCustomizerFeedService" Method: "mutate" URL: 
"https://adwords.google.com/api/adwords/cm/v201809/AdCustomizerFeedService";

 

[2018-12-05 12:39:41,601 - googleads.soap - DEBUG] Outgoing request: {
'SOAPAction': '""', 'Content-Type': 'text/xml; charset=utf-8', 
'authorization': 'REDACTED'} 

<soap-env:Envelope xmlns:soap-env=
"http://schemas.xmlsoap.org/soap/envelope/";> 

  <soap-env:Header> 

    <ns0:RequestHeader xmlns:ns0=
"https://adwords.google.com/api/adwords/cm/v201809";> 

      <ns0:clientCustomerId>197XXXXXX</ns0:clientCustomerId> 

      <ns0:developerToken>REDACTED</ns0:developerToken> 

      <ns0:userAgent>unknown (AwApi-Python, googleads/15.0.0, Python/3.6.3, 
zeep)</ns0:userAgent> 

      <ns0:validateOnly>false</ns0:validateOnly> 

      <ns0:partialFailure>false</ns0:partialFailure> 

    </ns0:RequestHeader> 

  </soap-env:Header> 

  <soap-env:Body> 

    <ns0:mutate xmlns:ns0=
"https://adwords.google.com/api/adwords/cm/v201809";> 

      <ns0:operations> 

        <ns0:operator>ADD</ns0:operator> 

        <ns0:operand> 

          <ns0:feedName>feed name xyz 2</ns0:feedName> 

          <ns0:feedAttributes> 

            <ns0:name>this is the column name 2</ns0:name> 

            <ns0:type>INT64</ns0:type> 

          </ns0:feedAttributes> 

        </ns0:operand> 

      </ns0:operations> 

    </ns0:mutate> 

  </soap-env:Body> 

</soap-env:Envelope> 


 

[2018-12-05 12:39:42,717 - googleads.soap - DEBUG] Incoming response:  

b'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>\n 
 <soap:Header>\n    <ResponseHeader 
xmlns="https://adwords.google.com/api/adwords/cm/v201809";>\n     
 <requestId>00057c43ffeXXXXXXX</requestId>\n     
 <serviceName>AdCustomizerFeedService</serviceName>\n     
 <methodName>mutate</methodName>\n      <operations>1</operations>\n     
 <responseTime>520</responseTime>\n    </ResponseHeader>\n 
 </soap:Header>\n  <soap:Body>\n    <soap:Fault>\n     
 <faultcode>soap:Client</faultcode>\n     
 <faultstring>[RequiredError.REQUIRED @ 
operations[0].operand.feedAttributes[0].type]</faultstring>\n     
 <detail>\n        <ApiExceptionFault 
xmlns="https://adwords.google.com/api/adwords/cm/v201809";>\n         
 <message>[RequiredError.REQUIRED @ 
operations[0].operand.feedAttributes[0].type]</message>\n         
 <ApplicationException.Type>ApiException</ApplicationException.Type>\n     
     <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:type="RequiredError">\n           
 <fieldPath>operations[0].operand.feedAttributes[0].type</fieldPath>\n     
       <fieldPathElements>\n              <field>operations</field>\n       
       <index>0</index>\n            </fieldPathElements>\n           
 <fieldPathElements>\n              <field>operand</field>\n           
 </fieldPathElements>\n            <fieldPathElements>\n             
 <field>feedAttributes</field>\n              <index>0</index>\n           
 </fieldPathElements>\n            <fieldPathElements>\n             
 <field>type</field>\n            </fieldPathElements>\n           
 <trigger/>\n           
 <errorString>RequiredError.REQUIRED</errorString>\n           
 <ApiError.Type>RequiredError</ApiError.Type>\n           
 <reason>REQUIRED</reason>\n          </errors>\n       
 </ApiExceptionFault>\n      </detail>\n    </soap:Fault>\n 
 </soap:Body>\n</soap:Envelope>\n' 

[2018-12-05 12:39:42,718 - googleads.soap - WARNING] Error summary: {
'faultMessage': '[RequiredError.REQUIRED @ 
operations[0].operand.feedAttributes[0].type]', 'requestId': 
'00057c43ffe9XXXXXXX', 'serviceName': 'AdCustomizerFeedService', 
'methodName': 'mutate', 'operations': '1', 'responseTime': '520'}



-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"AdWords API and Google Ads API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/655179f0-82a0-4e22-a62b-947cb4047e84%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
  • ... cosbgn
    • ... 'Dannison Yao (AdWords API Team)' via AdWords API and Google Ads API Forum
      • ... cosbgn
        • ... 'Dannison Yao (AdWords API Team)' via AdWords API and Google Ads API Forum
          • ... cosbgn
            • ... 'Dannison Yao (AdWords API Team)' via AdWords API and Google Ads API Forum
              • ... Costantin
                • ... 'Dannison Yao (AdWords API Team)' via AdWords API and Google Ads API Forum

Reply via email to