Hi seb,
Thanks for sending more details to me privately. I noticed in your code
that you are setting the adAsImage
<https://developers.google.com/adwords/api/docs/reference/v201506/AdGroupAdService.TemplateAd#adAsImage>
field,
and that's the only place where you use an *Image* object. However, I'm
pretty sure that the *adAsImage* field is being ignored since that field is
meant to provide you a preview of the ad in image form, and that preview
for template ID 455 is simply based on the other fields in the ad that
identify your app.
Does the image you provided actually appear on the ad in the AdWords user
interface?
Now to the other questions you sent over:
- What would happen if I use this method to create 500 ads when they all
use the same image?
- Per the above, I don't think you actually need to specify the image
for this template, but please let me know if you see otherwise.
- In general, if you are creating a large # of similar ads (e.g., all
for the same app), you can use the originAdId
<https://developers.google.com/adwords/api/docs/reference/v201506/AdGroupAdService.TemplateAd#originAdId>
to
specify an existing ad to copy from. You'll still have to supply some
required fields in the new *TemplateAd*. Based on experimentation, it
looks like the minimal set of fields is: *name, displayUrl, finalUrls*
- Is there a way to upload the image only once via any other method
(such as with the MediaServiceInterface) and reuse it?
- You can upload images (but not audio or video) using
MediaService.upload
<https://developers.google.com/adwords/api/docs/reference/v201506/MediaService#upload>,
then you should be able to use the resulting Media.mediaId
<https://developers.google.com/adwords/api/docs/reference/v201506/MediaService.Image#mediaId>
value
when creating other TemplateAds. Note that this *will not work* for
creating ImageAd
<https://developers.google.com/adwords/api/docs/reference/v201506/AdGroupAdService.ImageAd>
s.
- Is it possible to upload ads in a bulk via AdWords Editor?
- Unfortunately, I'm not an AdWords Editor expert. You may want to post
this question to the AdWords Community
<https://www.en.adwords-community.com/#> to see if the (non-API)
product experts there have any suggestions.
Thanks,
Josh, AdWords API Team
On Tuesday, August 18, 2015 at 4:51:08 PM UTC-4, Josh Radcliff (AdWords API
Team) wrote:
>
> Hi seb,
>
> Based on the logs I found, it looks like you are trying to create a
> *TemplateAd* with template ID 455. If so, could you elaborate on why an
> image is relevant here? The template fields for 455
> <https://developers.google.com/adwords/api/docs/appendix/templateads#image_cto_ad>
>
> do not include any *IMAGE* elements.
>
> If I'm mistaken about which type of ad you're creating, could you send
> over your SOAP request? You can send it *only to me* clicking *Reply
> privately to author* on this post.
>
> Thanks,
> Josh, AdWords API Team
>
> On Tuesday, August 18, 2015 at 9:11:02 AM UTC-4, seb wrote:
>>
>> Hi Josh,
>> My program fails right after calling
>> AdGroupAdServiceInterface#mutate(AdGroupAdOperation[]) and I don't get a
>> response.
>> I can send you the serialized Exception if you want (I could not attach
>> it to this post).
>>
>> El martes, 18 de agosto de 2015, 9:56:53 (UTC-3), Josh Radcliff (AdWords
>> API Team) escribió:
>>>
>>> Hi seb,
>>>
>>> Could you send over the *requestId* from the response in that failed
>>> request? That will help me track down the root cause of the exception.
>>>
>>> Thanks,
>>> Josh, AdWords API Team
>>>
>>> On Tuesday, August 18, 2015 at 8:52:41 AM UTC-4, seb wrote:
>>>>
>>>> Hi Josh,
>>>> I am trying to do what you said but I get the following error:
>>>>
>>>> Exception in thread "main" AxisFault
>>>> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
>>>> faultSubcode:
>>>> faultString: [InternalApiError.UNEXPECTED_INTERNAL_API_ERROR @
>>>> com.google.ads.api.services.common.error.InternalApiError.<init>(InternalApiErro]
>>>> faultActor:
>>>> faultNode:
>>>> faultDetail:
>>>> {
>>>> https://adwords.google.com/api/adwords/cm/v201502}ApiExceptionFault:<message>[InternalApiError.UNEXPECTED_INTERNAL_API_ERROR
>>>>
>>>> @
>>>> com.google.ads.api.services.common.error.InternalApiError.<init>(InternalApiErro]</message><ApplicationException.Type>ApiException</ApplicationException.Type><errors
>>>>
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>> xsi:type="InternalApiError"><fieldPath/><trigger/><errorString>InternalApiError.UNEXPECTED_INTERNAL_API_ERROR</errorString><ApiError.Type>InternalApiError</ApiError.Type><reason>UNEXPECTED_INTERNAL_API_ERROR</reason></errors>
>>>>
>>>> [InternalApiError.UNEXPECTED_INTERNAL_API_ERROR @
>>>> com.google.ads.api.services.common.error.InternalApiError.<init>(InternalApiErro]
>>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>> Method)
>>>> at
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>>>> at
>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>>>> at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
>>>> at java.lang.Class.newInstance(Class.java:442)
>>>> at
>>>> org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
>>>> at
>>>> org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
>>>> at
>>>> com.google.api.ads.adwords.axis.v201502.cm.ApiException.getDeserializer(ApiException.java:143)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:497)
>>>> at
>>>> org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
>>>> at
>>>> org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
>>>> at
>>>> org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
>>>> at
>>>> org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
>>>> at
>>>> org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
>>>> at
>>>> org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
>>>> at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown
>>>> Source)
>>>> at
>>>> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
>>>> Source)
>>>> at
>>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>>>>
>>>> Source)
>>>> at
>>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
>>>> Source)
>>>> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
>>>> Source)
>>>> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
>>>> Source)
>>>> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>>>> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>>>> at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
>>>> Source)
>>>> at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
>>>> at
>>>> org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
>>>> at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
>>>> at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
>>>> at
>>>> org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
>>>> at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
>>>> at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>>>> at org.apache.axis.client.Call.invoke(Call.java:2767)
>>>> at org.apache.axis.client.Call.invoke(Call.java:2443)
>>>> at org.apache.axis.client.Call.invoke(Call.java:2366)
>>>> at org.apache.axis.client.Call.invoke(Call.java:1812)
>>>> at
>>>> com.google.api.ads.adwords.axis.v201502.cm.AdGroupAdServiceSoapBindingStub.mutate(AdGroupAdServiceSoapBindingStub.java:1389)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>>> at
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:497)
>>>> at
>>>> com.google.api.ads.common.lib.soap.SoapClientHandler.invoke(SoapClientHandler.java:110)
>>>> at
>>>> com.google.api.ads.common.lib.soap.axis.AxisHandler.invokeSoapCall(AxisHandler.java:221)
>>>> at
>>>> com.google.api.ads.common.lib.soap.SoapServiceClient.callSoapClient(SoapServiceClient.java:64)
>>>> at
>>>> com.google.api.ads.common.lib.soap.SoapServiceClient.invoke(SoapServiceClient.java:94)
>>>> at com.sun.proxy.$Proxy14.mutate(Unknown Source)
>>>> at
>>>> com.despegar.sem.adwords.ads.mobile.TemplateAdUploader.main(TemplateAdUploader.java:60)
>>>>
>>>>
>>>>
>>>> El jueves, 13 de agosto de 2015, 16:02:51 (UTC-3), Josh Radcliff
>>>> (AdWords API Team) escribió:
>>>>>
>>>>> Hi seb,
>>>>>
>>>>> Have you tried using the TemplateAd.originAdId
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201506/AdGroupAdService.TemplateAd#originAdId>
>>>>> field
>>>>> to copy the image from the first *TemplateAd*? Using that approach,
>>>>> you could supply the *Image.data* directly on the first ad, then copy
>>>>> it over to all of the subsequent ads.
>>>>>
>>>>> Thanks,
>>>>> Josh, AdWords API Team
>>>>>
>>>>
--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and Google+:
https://googleadsdeveloper.blogspot.com/
https://plus.google.com/+GoogleAdsDevelopers/posts
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
You received this message because you are subscribed to the Google
Groups "AdWords 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 Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at http://groups.google.com/group/adwords-api.
To view this discussion on the web visit
https://groups.google.com/d/msgid/adwords-api/ed88b736-d960-4612-8cab-d41f01ac5ac3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.