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.&lt;init&gt;(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.&lt;init&gt;(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 adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
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 adwords-api+unsubscr...@googlegroups.com.
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.

Reply via email to