Hi Josh,

I understand the requirements, however I am having a difficult time 
translating this to appropriate Python code which does not result in an 
unmarshalling error. I have found the Python version of the code you're 
referencing --
https://github.com/googleads/googleads-python-lib/blob/master/examples/adwords/v201603/shopping/add_product_partition_tree.py

I tried to take this code and add modifications but am receiving this error:
suds.WebFault: Server raised fault: 'Unmarshalling Error: 
cvc-complex-type.2.3: Element 'ns0:operations' cannot have character 
[children], because the type's content type is element-only. '
[note: this style of formatting the code makes it very difficult for me to 
actually follow how to build it in the style that Anup has]

---

ad_group_id = '************'
criterion_id = '2523931-rou-6'

operations = []

#report_downloader = client.GetReportDownloader(version='v201603')
def main(client, parent=None, value=None):
    adgroup_id = '******'
    adgroup_criterion_service = 
client.GetService('AdGroupCriterionService', version='v201603')
    bid_amount = '1500'


    unit = {
        'xsi_type': 'ProductPartition',
        'partitionType': 'UNIT'
    }

    # The root node has neither a parent nor a value.
    #if parent is not None:
    #  unit['parentCriterionId'] = parent['id']
    #  unit['caseValue'] = value
    unit['caseValue'] = '2434807-rec-7x10'
    if bid_amount is not None and bid_amount > 0:
      bidding_strategy_configuration = {
          'bids': [{
              'xsi_type': 'CpcBid',
              'bid': {
                  'xsi_type': 'Money',
                  'microAmount': str(bid_amount)
              }
          }]
      }

      adgroup_criterion = {
          'xsi_type': 'BiddableAdGroupCriterion',
          'biddingStrategyConfiguration': bidding_strategy_configuration
      }
    else:
      adgroup_criterion = {
          'xsi_type': 'NegativeAdGroupCriterion'
      }

    adgroup_criterion['adGroupId'] = adgroup_id
    adgroup_criterion['criterion'] = unit

    CreateAddOperation(adgroup_criterion)
    result = adgroup_criterion_service.mutate(adgroup_criterion_service)
    return unit

def CreateAddOperation(criterion):
    """Creates an AdGroupCriterionOperation for the given criterion.
    Args:
      criterion: The criterion we want to add.
    """
    operation = {
        'operator': 'ADD',
        'operand': criterion
    }

    operations.append(operation)





if __name__ == '__main__':
  adwords_client = adwords.AdWordsClient.LoadFromStorage('********.yaml')
  main(adwords_client)

---

I do not see where to modify the biddableadgroup criterion to the 
productpartition type -- this code is much more difficult for me to follow 
along with :(.



On Friday, April 29, 2016 at 7:28:05 PM UTC-5, Josh Radcliff (AdWords API 
Team) wrote:
>
> Hi,
>
> It looks like you're missing the intermediate *ProductPartition* object. 
> You'll want to create one of those with *UNIT* partition type and set its 
> *caseValue* to the *ProductOfferId*. The 
> *BiddableAdGroupCriterion.criterion* should point to that 
> *ProductPartition* object instead of directly to the *ProductOfferId*.
>
> I realize this can be a bit confusing. :) I'd definitely recommend looking 
> at the createUnit function I mentioned earlier 
> <https://github.com/googleads/googleads-php-lib/blob/master/examples/AdWords/v201603/ShoppingCampaigns/AddProductPartitionTree.php#L108>,
>  
> as that handles most of this for you.
>
> Cheers,
> Josh, AdWords API Team
>
> On Friday, April 29, 2016 at 5:39:46 PM UTC-4, Kevin Weitzner wrote:
>>
>> Hi -- I think I am getting closer...
>>
>>
>> ad_group_id = '21********63'
>> criterion_id = '2523931-rou-6'
>>
>> Function now looks like this -
>> def main(client):
>>     adgroup_criterion_service = 
>> client.GetService('AdGroupCriterionService', version='v201603')
>>
>>
>>     bid_modifier = '1.5'
>>     operations =  [{
>>                           'xsi_type':'AdGroupCriterionOperation',
>>                           'operator': 'SET',
>>                           'operand': {
>>                                       'xsi_type': 
>> 'BiddableAdGroupCriterion',
>>                                       'adGroupId': ad_group_id,
>>                                       'criterion': {
>>                                                     'xsi_type': 
>> 'ProductOfferId',
>>                                                     'value': criterion_id
>>                                                     },
>>                                        'bidModifier': bid_modifier
>>
>>                             }
>>                           }]
>>     result = adgroup_criterion_service.mutate(operations)
>> --
>>
>> I want to set an absolute CPC bid (variable name bid_modifier from 
>> earlier, $1.5) on an individual product ID -
>> I get this error:
>> suds.WebFault: Server raised fault: 'Unmarshalling Error: cvc-elt.4.3: 
>> Type 'ns0:ProductOfferId' is not validly derived from the type definition, 
>> 'Criterion', of element 'ns0:criterion'. '
>> -
>>
>> Any ideas on what I have done wrong here
>>
>>
>>
>>
>> On Friday, April 29, 2016 at 4:07:34 PM UTC-5, Josh Radcliff (AdWords API 
>> Team) wrote:
>>>
>>> Hi Kevin,
>>>
>>> You can set bids at the product/item ID level by creating 
>>> BiddableAdGroupCriterion 
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.BiddableAdGroupCriterion>
>>>  
>>> objects with:
>>>
>>>    - criterion 
>>>    
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.BiddableAdGroupCriterion#criterion>
>>>  = 
>>>    a ProductPartition 
>>>    
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.ProductPartition>
>>>     with:
>>>    - caseValue 
>>>       
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.ProductPartition#casevalue>
>>>  = 
>>>       a ProductOfferId 
>>>       
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.ProductOfferId>
>>>        with:
>>>       - value 
>>>          
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.ProductOfferId#value>
>>>  set 
>>>          to the product ID from Merchant Center
>>>          - biddingStrategyConfiguration 
>>>    
>>> <https://developers.google.com/adwords/api/docs/reference/v201603/AdGroupCriterionService.BiddableAdGroupCriterion#biddingstrategyconfiguration>
>>>  configured 
>>>    with your bids
>>>    
>>> Please see the createUnit function in the AddProductPartitionTree.php 
>>> example 
>>> <https://github.com/googleads/googleads-php-lib/blob/master/examples/AdWords/v201603/ShoppingCampaigns/AddProductPartitionTree.php#L108>
>>>  for 
>>> details.
>>>
>>> Cheers,
>>> Josh, AdWords API Team
>>>
>>> On Friday, April 29, 2016 at 4:31:51 PM UTC-4, Kevin Weitzner wrote:
>>>>
>>>> Hi -- I am not certain how the last step should be executed --I am not 
>>>> getting any errors, however CPC for productID is not being set.
>>>>
>>>> See script below:
>>>>
>>>> ad_group_id = '**************'
>>>> criterion_id = '******'
>>>>
>>>> def main(client):
>>>>     adgroup_criterion_service = 
>>>> client.GetService('AdGroupCriterionService', version='v201603')
>>>>
>>>>     bid_modifier = '15'
>>>>
>>>>     operations =  [{
>>>>                           'xsi_type':'AdGroupCriterionOperation',
>>>>                           'operator': 'SET',
>>>>                           'operand': {
>>>>                                       'xsi_type': 
>>>> 'BiddableAdGroupCriterion',
>>>>                                       'adGroupId': ad_group_id,
>>>>                                       'criterion': {
>>>>                                                     'xsi_type': 
>>>> 'ProductPartition',
>>>>                                                     'id': criterion_id
>>>>                                                     },
>>>>                                        'bidModifier':bid_modifier
>>>>
>>>>                             }
>>>>                           }]
>>>>
>>>> if __name__ == '__main__':
>>>>   adwords_client = adwords.AdWordsClient.LoadFromStorage('******.yaml')
>>>>   main(adwords_client)
>>>>
>>>> --
>>>>
>>>> I would like to be able to set the CPC of product Ids themselves by 
>>>> passing the appropriate product ID in the Criterion_ID --- I have 
>>>> thousands 
>>>> of products that I want to try a strategy on.  I believe the last step in 
>>>> the explanation is what I am missing here.
>>>>
>>>> Thanks,
>>>> Kevin
>>>>
>>>> On Thursday, September 25, 2014 at 12:00:28 PM UTC-5, Josh Radcliff 
>>>> (AdWords API Team) wrote:
>>>>>
>>>>> Hi Steve,
>>>>>
>>>>> Just to clarify - by "script" I'm assuming you mean code that executes 
>>>>> methods in the AdWords API 
>>>>> <https://developers.google.com/adwords/api/docs/>, and not AdWords 
>>>>> Scripts <https://developers.google.com/adwords/scripts/>. All 
>>>>> management of product groups in the AdWords API is done via 
>>>>> AdGroupCriterionService 
>>>>> <https://developers.google.com/adwords/api/docs/reference/latest/AdGroupCriterionService>.
>>>>>  
>>>>> The Shopping Guide 
>>>>> <https://developers.google.com/adwords/api/docs/guides/shopping> contains 
>>>>> a useful introduction to the concepts involved.
>>>>>
>>>>> Once you have your product groups set up, you can modify a given 
>>>>> product group's CPC bid by sending an AdGroupCriterionService.mutate 
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService#mutate>
>>>>>  call 
>>>>> containing an AdGroupCriterionOperation 
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.AdGroupCriterionOperation>
>>>>>  where 
>>>>> the *operator* is *SET* and the operand is a BiddableAdGroupCriterion 
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.BiddableAdGroupCriterion>
>>>>>  with:
>>>>>
>>>>>    - adGroupId 
>>>>>    
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.BiddableAdGroupCriterion#adGroupId>
>>>>>  set 
>>>>>    to the ad group's ID
>>>>>    - criterion 
>>>>>    
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.BiddableAdGroupCriterion#criterion>
>>>>>  set 
>>>>>    to a ProductPartition 
>>>>>    
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.ProductPartition>
>>>>>  with 
>>>>>    its id 
>>>>>    
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.ProductPartition#id>
>>>>>  set 
>>>>>    to the product group's (ProductPartition's) ID you want to update
>>>>>    - biddingStrategyConfiguration 
>>>>>    
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.BiddableAdGroupCriterion#biddingStrategyConfiguration>
>>>>>  set 
>>>>>    to a BiddingStrategyConfiguration 
>>>>>    
>>>>> <https://developers.google.com/adwords/api/docs/reference/v201406/AdGroupCriterionService.BiddingStrategyConfiguration>
>>>>>  object 
>>>>>    with the proper CPC bid configured
>>>>>    
>>>>> To monitor the performance of each product group (ProductPartition), 
>>>>> you can use the API's Product Partition Report 
>>>>> <https://developers.google.com/adwords/api/docs/appendix/reports#product-partition>
>>>>> .
>>>>>
>>>>> Cheers,
>>>>> Josh, AdWords API Team
>>>>>
>>>>> On Wednesday, September 24, 2014 10:41:29 AM UTC-4, Steve Berg wrote:
>>>>>>
>>>>>> Hello, 
>>>>>>
>>>>>> I would like in my 30 Shopping Campaigns 
>>>>>> the offer and the management of the CPC from the Product Groups 
>>>>>> automate. 
>>>>>> For example, the CPC should be low in a low CTR 
>>>>>> be in good conversion correspondingly higher. 
>>>>>>
>>>>>> How would a possible script look like? 
>>>>>>
>>>>>> Best Regards 
>>>>>> - Steve -
>>>>>>
>>>>>

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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/7c5c57bd-e3d2-4bb4-9df8-c84b69f00ab0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to