Hi Travis, This error is being generated by the library, and the cause appears to be a missing "criterionType" field on your keywords ( see http://code.google.com/apis/adwords/docs/developer/Keyword.html#criterionType ). This is a required field of the criterion and must be set.
Best, - Eric Koleda, AdWords API Team On Nov 17, 10:44 am, Travis B <[email protected]> wrote: > Hi Eric, > > I am using awapi_python_lib_7.2.0 for python. It works fine for > posting keywords where I don't set 'negative': True. > > The method looks like this > ============BEGIN CODE > def add_keywords(self, ad_group_id, keyword_list, match_type): > neg_criteria = [] > print match_type > if match_type == mt_broad: > one_type = 'Broad' > neg_criteria.extend([{'negative': True, > 'adGroupId':ad_group_id, > 'text':x, > 'type':'Phrase'} for x in > keyword_list.keys()]) > neg_criteria.extend([{'negative': True, > 'adGroupId':ad_group_id, > 'text':x, > 'type':'Exact'} for x in > keyword_list.keys()]) > elif match_type == mt_phrase: > one_type = 'Phrase' > neg_criteria.extend([{'negative': True, > 'adGroupId':ad_group_id, > 'text':x, > 'type':'Exact'} for x in > keyword_list.keys()]) > elif match_type == mt_exact: > one_type = 'Exact' > > criteria = [{'adGroupId':ad_group_id, > 'criterionType':'Keyword', > 'destinationUrl':v['keyword_url'], > 'maxCpc': str(round_micro_to_cent(v > ['keyword_max_cpc'])), > 'text':x, > 'type':one_type, > } for x,v in keyword_list.items()] > criteria.extend(neg_criteria) > res = self._criterion_service.AddCriteria(criteria) > > return res > ==================END CODE > > keyword_list is a dictionary that looks something like this: > =============BEGIN DICT > { > 'race ny': {'keyword_id': 4604L, > 'keyword_max_cpc': '175000', > 'keyword_url': 'http://qwobl.com/<SNIP> > 0f9e8%26sid%3Dqwobl_google_3019&dkw=x', > 'match_type': 'http://sem.rdf.qwobl.com/ > matchtype/phrase#phrase'}, > 'race ny tickets': {'keyword_id': 4622L, > 'keyword_max_cpc': '245000', > 'keyword_url': 'http://qwobl.com/ > <SNIP>', > 'match_type': 'http:// > sem.rdf.qwobl.com/matchtype/phrase#phrase'}} > > =============END DICT > > _criterion_service is defined like this: > ===============BEGIN CODE > self._apiclient = Client(path=config.google.pickle_path) > self._criterion_service = self._apiclient.GetCriterionService > ('https://sandbox.google.com') > ===============END CODE > > Thanks for your help! > > -Travis > > On Nov 16, 11:06 am, AdWords API Advisor > > > > <[email protected]> wrote: > > Hi Travis, > > > Are you using a client library for these requests? If so, which > > language and version? What does the code look like that leads to this > > error? > > > Best, > > - Eric Koleda, AdWords API Team > > > On Nov 13, 10:22 am, Travis B <[email protected]> wrote: > > > > Hi, > > > > I'm trying to set negative criteria for an adgroup (along with non- > > > negative ones) in a call to CriterionService.AddCriteria. I get the > > > following error message: > > > > aw_api.Errors.ValidationError: Given API version, v13, is not > > > compatible with 'Phrase' class. > > > > However the error appears for every value of Keyword type ('Broad', > > > 'Phrase' and 'Exact'). Can I simply not set ad group negative criteria > > > in version 13 of the API? > > > > Thanks, > > > -Travis -- 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=.
