Hi Danial,

Here are the steps we're taking:

Create ad in AdWords interface

   - - Ad is enabled 
   - - Ad group is enabled 
   - - Campaign is enabled 


Using Java API v201306


A report is downloaded using ReportDownloader:

Fields: "CampaignStatus", "AdGroupStatus", "Status", 
"CreativeApprovalStatus", "AdGroupId", "Id", "CampaignName", "AdGroupName", 
"Headline", "Description1", "Description2", "DisplayUrl", "Url"

Date range type: ReportDefinitionDateRangeType.TODAY

Include zero impressions: true

Download format: TSV

Predicates:

- "CampaignStatus" NOT_IN "DELETED"

- "AdGroupStatus" NOT_IN "DELETED"

- "Status" NOT_IN "DISABLED"

- "AdType" IN "TEXT_AD"


This is parsed into a collection of existing ads which can be found by 
AdGroupID-ID.  Each of the existing ads is augmented with the updated 
destination URL.


AdGroupAds are downloaded via adGroupAdService.get:

[09 Sep 2013 10:31:57,040-requestInfoLogger:INFO:AWT-EventQueue-0] Request 
made: Service: "AdGroupAdServiceInterfacePort" Method: "get" URL: "
https://adwords.google.com/api/adwords/cm/v201306/AdGroupAdService";

Fields: "Id", "AdGroupId", "Status", "DevicePreference"

Ordering: OrderBy("Id", SortOrder.ASCENDING)

Predicates:

   - - "Status" NOT_IN "DISABLED" 
   - - "Id" IN <array of IDs of ads that will be updated> 


Operations are added:

   - - For each AdGroupAd 
      - o Update the destination URL 
      - o Add an ADD operation for the AdGroupAd to the operations array 
      - o Add a REMOVE operation for the AdGroupAd to the operations array 
      - o Call mutate on operations array 
   

[09 Sep 2013 10:31:57,565-requestInfoLogger:INFO:AWT-EventQueue-0] Request 
made: Service: "AdGroupAdServiceInterfacePort" Method: "mutate" URL: "
https://adwords.google.com/api/adwords/cm/v201306/AdGroupAdService";

[09 Sep 2013 10:31:57,930-requestInfoLogger:INFO:AWT-EventQueue-0] Request 
made: Service: "AdGroupAdServiceInterfacePort" Method: "mutate" URL: "
https://adwords.google.com/api/adwords/cm/v201306/AdGroupAdService";


<SOAP request/response as shown in previous post is in stack trace from 
caught exception>

On Friday, September 6, 2013 10:47:19 AM UTC-4, Danial Klimkin wrote:
>
> Hello Jeremy,
>
>
> I tried to reproduce this in several configurations but was able to get 
> this error only when removing an ad which is already in state "DISABLED".
>
> Please double-check the status before removal, and the fact the request is 
> sent only once. If you can provide exact steps to reproduce the issue, 
> please send us requests for the full sequence (starting with adding an ad).
>
>
> -Danial, AdWords API Team.
>
>
>
> On Wednesday, August 28, 2013 4:46:19 PM UTC+4, Jeremy Aube wrote:
>>
>> As far as I can tell the ads were both active. In the interface there are 
>> two ads before the request is made, and after there are still two ads, but 
>> the destination URLs have been updated.
>>
>> We've also tried just deleting the ads and we get the same error, after 
>> which the ads are both delete in the interface. So we seem to have the 
>> right ads since they're getting deleted, but we still get that error 
>> message for them.
>>
>> On Wednesday, August 28, 2013 6:44:56 AM UTC-4, Danial Klimkin wrote:
>>>
>>> Hello Jeremy,
>>>
>>>
>>> This error is expected if you try to "delete" an already-deleted ad. Are 
>>> you sure both ads were active before this request?
>>>
>>>
>>> -Danial, AdWords API Team.
>>>
>>>
>>> On Wednesday, August 21, 2013 10:02:33 PM UTC+4, Jeremy Aube wrote:
>>>>
>>>> We've started getting 
>>>> AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD errors whenever 
>>>> updating 
>>>> ads. The update still works, but the error is disconcerting. 
>>>>
>>>> Any idea why this is happening? Here's the log:
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <soapenv:Envelope xmlns:soapenv="
>>>> http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsd="
>>>> http://www.w3.org/2001/XMLSchema"; xmlns:xsi="
>>>> http://www.w3.org/2001/XMLSchema-instance";>
>>>>     <soapenv:Header>
>>>>         <ns1:RequestHeader xmlns:ns1="
>>>> https://adwords.google.com/api/adwords/cm/v201306"; 
>>>> soapenv:mustUnderstand="0">
>>>>             <ns1:clientCustomerId>460-887-8120</ns1:clientCustomerId>
>>>>             <ns1:developerToken>****</ns1:developerToken>
>>>>             <ns1:userAgent>INSERT_USERAGENT_HERE (AwApi-Java, 
>>>> AdWords-Axis/1.18.1, Common-Java/1.18.1, Axis/1.4, Java/1.6.0_51, 
>>>> maven)</ns1:userAgent>
>>>>             <ns1:validateOnly>false</ns1:validateOnly>
>>>>             <ns1:partialFailure>false</ns1:partialFailure>
>>>>         </ns1:RequestHeader>
>>>>     </soapenv:Header>
>>>>     <soapenv:Body>
>>>>         <mutate xmlns="
>>>> https://adwords.google.com/api/adwords/cm/v201306";>
>>>>             <operations>
>>>>                 <operator>REMOVE</operator>
>>>>                 <operand>
>>>>                     <adGroupId>7081656796</adGroupId>
>>>>                     <ad xmlns:ns2="
>>>> https://adwords.google.com/api/adwords/cm/v201306"; 
>>>> xsi:type="ns2:TextAd">
>>>>                         <ns2:id>26524386916</ns2:id>
>>>>                     </ad>
>>>>                 </operand>
>>>>             </operations>
>>>>             <operations>
>>>>                 <operator>ADD</operator>
>>>>                 <operand>
>>>>                     <adGroupId>7081656796</adGroupId>
>>>>                     <ad xmlns:ns3="
>>>> https://adwords.google.com/api/adwords/cm/v201306"; 
>>>> xsi:type="ns3:TextAd">
>>>>                         <ns3:url>http://www.purple.com/?****</ns3:url>
>>>>                         <ns3:displayUrl>www.purple.com/
>>>> </ns3:displayUrl>
>>>>                         <ns3:Ad.Type>TextAd</ns3:Ad.Type>
>>>>                         <ns3:headline>Excessive 
>>>> Capitalization</ns3:headline>
>>>>                         <ns3:description1>Desc 1</ns3:description1>
>>>>                         <ns3:description2>Desc 2</ns3:description2>
>>>>                     </ad>
>>>>                     <status>ENABLED</status>
>>>>                     <approvalStatus>FAMILY_SAFE</approvalStatus>
>>>>                     <trademarkDisapproved>false</trademarkDisapproved>
>>>>                     <stats>
>>>>                         <network>SEARCH</network>
>>>>                         <Stats.Type>AdStats</Stats.Type>
>>>>                         <percentServed>0.0</percentServed>
>>>>                     </stats>
>>>>                 </operand>
>>>>             </operations>
>>>>             <operations>
>>>>                 <operator>REMOVE</operator>
>>>>                 <operand>
>>>>                     <adGroupId>7081656796</adGroupId>
>>>>                     <ad xmlns:ns4="
>>>> https://adwords.google.com/api/adwords/cm/v201306"; 
>>>> xsi:type="ns4:TextAd">
>>>>                         <ns4:id>26524387036</ns4:id>
>>>>                     </ad>
>>>>                 </operand>
>>>>             </operations>
>>>>             <operations>
>>>>                 <operator>ADD</operator>
>>>>                 <operand>
>>>>                     <adGroupId>7081656796</adGroupId>
>>>>                     <ad xmlns:ns5="
>>>> https://adwords.google.com/api/adwords/cm/v201306"; 
>>>> xsi:type="ns5:TextAd">
>>>>                         <ns5:url>http://www.purple.com/?****</ns5:url>
>>>>                         <ns5:displayUrl>www.purple.com/
>>>> </ns5:displayUrl>
>>>>                         
>>>> <ns5:devicePreference>30001</ns5:devicePreference>
>>>>                         <ns5:Ad.Type>TextAd</ns5:Ad.Type>
>>>>                         <ns5:headline>Excessive 
>>>> Capitalization</ns5:headline>
>>>>                         <ns5:description1>Desc 1 - M</ns5:description1>
>>>>                         <ns5:description2>Desc 2 - M</ns5:description2>
>>>>                     </ad>
>>>>                     <status>ENABLED</status>
>>>>                     <approvalStatus>FAMILY_SAFE</approvalStatus>
>>>>                     <trademarkDisapproved>false</trademarkDisapproved>
>>>>                     <stats>
>>>>                         <network>SEARCH</network>
>>>>                         <Stats.Type>AdStats</Stats.Type>
>>>>                         <percentServed>0.0</percentServed>
>>>>                     </stats>
>>>>                 </operand>
>>>>             </operations>
>>>>         </mutate>
>>>>     </soapenv:Body>
>>>> </soapenv:Envelope>
>>>>
>>>> [21 Aug 2013 13:51:57,633-soapXmlLogger:WARN:AWT-EventQueue-0] SOAP 
>>>> Response:
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>>>>     <soap:Header>
>>>>         <ResponseHeader xmlns="
>>>> https://adwords.google.com/api/adwords/cm/v201306";>
>>>>             <requestId>0004e478d407a9780ae5ed0a00004061</requestId>
>>>>             <serviceName>AdGroupAdService</serviceName>
>>>>             <methodName>mutate</methodName>
>>>>             <operations>4</operations>
>>>>             <responseTime>248</responseTime>
>>>>         </ResponseHeader>
>>>>     </soap:Header>
>>>>     <soap:Body>
>>>>         <soap:Fault>
>>>>             <faultcode>soap:Server</faultcode>
>>>>             
>>>> <faultstring>[AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD @ 
>>>> operations[0].operand, AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD 
>>>> @ 
>>>> operations[2].operand]</faultstring>
>>>>             <detail>
>>>>                 <ApiExceptionFault xmlns="
>>>> https://adwords.google.com/api/adwords/cm/v201306";>
>>>>                     
>>>> <message>[AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD @ 
>>>> operations[0].operand, AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD 
>>>> @ 
>>>> operations[2].operand]</message>
>>>>                     
>>>> <ApplicationException.Type>ApiException</ApplicationException.Type>
>>>>                     <errors xmlns:xsi="
>>>> http://www.w3.org/2001/XMLSchema-instance"; xsi:type="AdGroupAdError">
>>>>                         <fieldPath>operations[0].operand</fieldPath>
>>>>                         <trigger/>
>>>>                         
>>>> <errorString>AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD</errorString>
>>>>                         <ApiError.Type>AdGroupAdError</ApiError.Type>
>>>>                         
>>>> <reason>CANNOT_OPERATE_ON_DELETED_ADGROUPAD</reason>
>>>>                     </errors>
>>>>                     <errors xmlns:xsi="
>>>> http://www.w3.org/2001/XMLSchema-instance"; xsi:type="AdGroupAdError">
>>>>                         <fieldPath>operations[2].operand</fieldPath>
>>>>                         <trigger/>
>>>>                         
>>>> <errorString>AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD</errorString>
>>>>                         <ApiError.Type>AdGroupAdError</ApiError.Type>
>>>>                         
>>>> <reason>CANNOT_OPERATE_ON_DELETED_ADGROUPAD</reason>
>>>>                     </errors>
>>>>                 </ApiExceptionFault>
>>>>             </detail>
>>>>         </soap:Fault>
>>>>     </soap:Body>
>>>> </soap:Envelope>
>>>>
>>>> AxisFault
>>>>  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
>>>>  faultSubcode: 
>>>>  faultString: [AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD @ 
>>>> operations[0].operand, AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD 
>>>> @ 
>>>> operations[2].operand]
>>>>  faultActor: 
>>>>  faultNode: 
>>>>  faultDetail: 
>>>> {https://adwords.google.com/api/adwords/cm/v201306}ApiExceptionFault:<message>[AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD
>>>>  
>>>> @ operations[0].operand, 
>>>> AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD 
>>>> @ 
>>>> operations[2].operand]</message><ApplicationException.Type>ApiException</ApplicationException.Type><errors
>>>>  
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>>>> xsi:type="AdGroupAdError"><fieldPath>operations[0].operand</fieldPath><trigger/><errorString>AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD</errorString><ApiError.Type>AdGroupAdError</ApiError.Type><reason>CANNOT_OPERATE_ON_DELETED_ADGROUPAD</reason></errors><errors
>>>>  
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
>>>> xsi:type="AdGroupAdError"><fieldPath>operations[2].operand</fieldPath><trigger/><errorString>AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD</errorString><ApiError.Type>AdGroupAdError</ApiError.Type><reason>CANNOT_OPERATE_ON_DELETED_ADGROUPAD</reason></errors>
>>>>
>>>> [AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD @ 
>>>> operations[0].operand, AdGroupAdError.CANNOT_OPERATE_ON_DELETED_ADGROUPAD 
>>>> @ 
>>>> operations[2].operand]
>>>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>>>> at 
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>> at 
>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>>> at java.lang.Class.newInstance0(Class.java:357)
>>>> at java.lang.Class.newInstance(Class.java:310)
>>>> 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.v201306.cm.ApiException.getDeserializer(ApiException.java:143)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at 
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>> at 
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>>> 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 
>>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2756)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>>>> at 
>>>> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>>>> at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
>>>> 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.v201306.cm.AdGroupAdServiceSoapBindingStub.mutate(AdGroupAdServiceSoapBindingStub.java:1248)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at 
>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>> at 
>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>> at java.lang.reflect.Method.invoke(Method.java:597)
>>>> at 
>>>> com.google.api.ads.common.lib.soap.SoapClientHandler.invoke(SoapClientHandler.java:109)
>>>> at 
>>>> com.google.api.ads.common.lib.soap.axis.AxisHandler.invokeSoapCall(AxisHandler.java:175)
>>>> 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:93)
>>>> at com.sun.proxy.$Proxy22.mutate(Unknown Source)
>>>>
>>>>
>>>>
>>>>

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and discussion group:
http://adwordsapi.blogspot.com
http://groups.google.com/group/adwords-api
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to