Hello Vladimir, As for the ad policy, the AdWords Community <https://www.en.advertisercommunity.com/t5/Ad-Approval-Policy/bd-p/Policies> forum may have experts on this who can answer your question more specifically. Having said that, from your provided log, it seems your keyword has isExemptable <https://developers.google.com/adwords/api/docs/reference/v201509/AdGroupAdService.PolicyViolationError#isexemptable> = true, meaning that you can request a policy exemption <https://developers.google.com/adwords/api/docs/reference/v201509/AdGroupAdService.ExemptionRequest> .
Please have a look at this guide <https://developers.google.com/adwords/api/docs/guides/exemption-requests> for more information. Best, Thanet, AdWords API Team On Thursday, December 24, 2015 at 2:23:26 AM UTC+9, Vladimir Shempliner wrote: > > Hello! > Iam trying to add several kewords to the AdGroup. > Keyword "BL 4U" cannot be added due to ERROR: > > Exception in thread "main" AxisFault > faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server > faultSubcode: > faultString: > [PolicyViolationError{super=PolicyViolationError.POLICY_ERROR @ > operations[0].operand.criterion.text; trigger:'4U', > key=PolicyViolationKey{policyName=nonstandard_punctuation,violatingText=4U}, > externalPolicyName=Non-standard punctuation, externalPolicyUrl=, > externalPolicyDescription=Keywords aren't allowed to use excessive or > unnecessary punctuation or symbols, or use non-standard punctuation, > including tildes (~), asterisks (*) and vertical rules (|). > <a href=" > https://support.google.com/adwordspolicy/answer/176095" > target="_blank">See the full policy</a>, > isExemtable=true, violatingParts=[Part{index=3, length=2}]}] > faultActor: > faultNode: > faultDetail: > {https://adwords.google.com/api/adwords/cm/v201509}ApiExceptionFault:<message>[PolicyViolationError{super=PolicyViolationError.POLICY_ERROR > > @ operations[0].operand.criterion.text; trigger:'4U', > key=PolicyViolationKey{policyName=nonstandard_punctuation,violatingText=4U}, > externalPolicyName=Non-standard punctuation, externalPolicyUrl=, > externalPolicyDescription=Keywords aren't allowed to use excessive or > unnecessary punctuation or symbols, or use non-standard punctuation, > including tildes (~), asterisks (*) and vertical rules (|). > <a href=" > https://support.google.com/adwordspolicy/answer/176095" > target="_blank">See the full policy</a>, > isExemtable=true, violatingParts=[Part{index=3, > length=2}]}]</message><ApplicationException.Type>ApiException</ApplicationException.Type><errors > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:type="PolicyViolationError"><fieldPath>operations[0].operand.criterion.text</fieldPath><trigger>4U</trigger><errorString>PolicyViolationError.POLICY_ERROR</errorString><ApiError.Type>PolicyViolationError</ApiError.Type><key><policyName>nonstandard_punctuation</policyName><violatingText>4U</violatingText></key><externalPolicyName>Non-standard > > punctuation</externalPolicyName><externalPolicyUrl/><externalPolicyDescription>Keywords > > aren't allowed to use excessive or unnecessary punctuation or symbols, or > use non-standard punctuation, including tildes (~), asterisks (*) and > vertical rules (|). > <a href=" > https://support.google.com/adwordspolicy/answer/176095" > target="_blank">See the full > policy</a></externalPolicyDescription><isExemptable>true</isExemptable><violatingParts><index>3</index><length>2</length></violatingParts></errors> > > [PolicyViolationError{super=PolicyViolationError.POLICY_ERROR @ > operations[0].operand.criterion.text; trigger:'4U', > key=PolicyViolationKey{policyName=nonstandard_punctuation,violatingText=4U}, > externalPolicyName=Non-standard punctuation, externalPolicyUrl=, > externalPolicyDescription=Keywords aren't allowed to use excessive or > unnecessary punctuation or symbols, or use non-standard punctuation, > including tildes (~), asterisks (*) and vertical rules (|). > <a href="https://support.google.com/adwordspolicy/answer/176095" > target="_blank">See the full policy</a>, isExemtable=true, > violatingParts=[Part{index=3, length=2}]}] > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at java.lang.reflect.Constructor.newInstance(Constructor.java:526) > at java.lang.Class.newInstance(Class.java:379) > 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.v201509.cm.ApiException.getDeserializer(ApiException.java:142) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > 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:509) > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:379) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) > at > com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) > at > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) > at > com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648) > at > com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:332) > 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.v201509.cm.AdGroupCriterionServiceSoapBindingStub.mutate(AdGroupCriterionServiceSoapBindingStub.java:1730) > at sun.reflect.GeneratedMethodAccessor192.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > 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:230) > at > com.google.api.ads.common.lib.soap.SoapServiceClient.callSoapClient(SoapServiceClient.java:62) > at > com.google.api.ads.common.lib.soap.SoapServiceClient.invoke(SoapServiceClient.java:92) > at com.sun.proxy.$Proxy31.mutate(Unknown Source) > at ads.adwords.AdwordsAPI.addAdGroupKeywords(AdwordsAPI.java:225) > at ads.adwords.AdwordsAPI.campaign(AdwordsAPI.java:178) > at ads.adwords.AdwordsAPI.main(AdwordsAPI.java:71) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:606) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) > > > > Code: > > AdGroupCriterionOperation[] operations = new > AdGroupCriterionOperation[keywords.length]; > int i = 0; > for (String keyword : keywords) { > Keyword key = new Keyword(); > key.setText(keyword); > key.setMatchType(KeywordMatchType.BROAD); > BiddableAdGroupCriterion adGroupCriterion = new > BiddableAdGroupCriterion(); > adGroupCriterion.setAdGroupId(adGroupId); > adGroupCriterion.setCriterion(key); > AdGroupCriterionOperation operation = new AdGroupCriterionOperation(); > operation.setOperand(adGroupCriterion); > operation.setOperator(Operator.ADD); > operations[i++] = operation; > } > AdGroupCriterionServiceInterface adGroupCriterionService = > adWordsServices.get(session, AdGroupCriterionServiceInterface.class); > AdGroupCriterionReturnValue result = > adGroupCriterionService.mutate(operations); > > > > How the key "4U" violates keyword rules?! > Thanks. > > -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ 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 https://groups.google.com/group/adwords-api. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/4e04cff7-c7a4-44c5-85f1-863666251660%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.