Fixed - changed the operator to "SET" rather than add.

Final code that works... I cannot modify productID level CPCs yet .. so not 
ideal however this will suffice I think, I am not sure how to utilize 
suggestions that Josh has offered.
--
def main(client):
    adgroup_criterion_service = 
client.GetService('AdGroupCriterionService', version='v201603')


    bid_modifier = '1500000'
   #1.50 bid in microns
    operation = {
                        'xsi_type':'AdGroupCriterionOperation',
                        'operator': 'SET',

                        'operand': {
                                    'xsi_type': 'BiddableAdGroupCriterion',
                                    'adGroupId': ad_group_id,
                                    'criterion': {
                                                    'xsi_type': 
'ProductPartition',
                                                    'id': criterion_id,
                                                    
'partitionType':'SUBDIVISION'
                                                },
                                    'biddingStrategyConfiguration': {
                                                                    
 'bids': [{
                                                                            
   'xsi_type': 'CpcBid',
                                                                            
   'bid': {
                                                                            
             'microAmount': str(bid_modifier)
                                                                            
           },
                                                                            
   }]
                                                                    }
                                    }
                        }





    result = adgroup_criterion_service.mutate(operation)




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

On Monday, May 2, 2016 at 10:23:06 AM UTC-5, Kevin Weitzner wrote:
>
> I modified the code and now receive invalid bid error(was receiving 
> invalid parititon type earlier so I added it in):
> suds.WebFault: Server raised fault: '[BiddingErrors.INVALID_BID @ 
> operations[0].operand.biddingStrategyConfiguration.bids; 
> trigger:'CpcBid{bid=1.500000, contentBid=null, cpcBidSource=null}']'
>
>
> I've tried putting in various bids..
>
> operation = {
>                         'xsi_type':'AdGroupCriterionOperation',
>                         'operator': 'ADD',
>
>                         'operand': {
>                                     'xsi_type': 'BiddableAdGroupCriterion',
>                                     'adGroupId': ad_group_id,
>                                     'criterion': {
>                                                     'xsi_type': 
> 'ProductPartition',
>                                                     'id': criterion_id,
>                                                     
> *'partitionType':'SUBDIVISION'*
>                                                 },
>                                     'biddingStrategyConfiguration': {
>                                                                     
>  'bids': [{
>                                                                           
>      'xsi_type': 'CpcBid',
>                                                                           
>      'bid': {
>                                                                           
>                'microAmount': str(bid_modifier)
>                                                                           
>              },
>                                                                           
>      }]
>                                                                     }
>                                     }
>                         }
>
> On Monday, May 2, 2016 at 10:12:54 AM UTC-5, Kevin Weitzner wrote:
>>
>> Hi Anup,
>>
>> Is there a way to obtain criteria Id for actual product IDs for items? 
>>  Or is there an easy way to obtain criteria id?  I created a 
>> Product_Partition_report for a different adgroup since my actual test one 
>> was not showing up (not live campaign).
>>
>> I got the CriterionId and ran it and got this error:
>> suds.WebFault: Server raised fault: '[RequiredError.REQUIRED @ 
>> operations[0].operand.criterion.partitionType]'
>>
>> I picked a simple one with no underlying partitions -
>> http://i.imgur.com/ABqO23Y.png
>>
>> I also tried one with subdivsions and got the same error.  Any ideas? 
>>  Once I have this working I will try to expand it so that I can explode our 
>> ProductIds from what Josh stated earlier.. I'm not sure why this is so 
>> difficult for me.
>> --
>>
>>
>>
>> On Monday, May 2, 2016 at 9:35:37 AM UTC-5, Anup Pathak wrote:
>>>
>>> Hi Kevin,
>>>
>>>
>>> You have to take Criteria id from PRODUCT_PARTITION_REPORT and use that 
>>> Criteria id,
>>>  you are using wrong criteria id
>>>
>>>
>>> let me know if you need more help in this!
>>>
>>>
>>> Thank you!
>>> Anup Pathak
>>>
>>> On Monday, 2 May 2016 19:26:32 UTC+5:30, Kevin Weitzner wrote:
>>>>
>>>> Hi Anup,
>>>>
>>>> I tried your operations and still receive an Unmarshalling Error for my 
>>>> input string (my criterion ID was a product ID.)  So I changed the product 
>>>> groups as such: "All products > lighting, rugs, outdoor, Everything else 
>>>> in 
>>>> 'All products'
>>>>
>>>> Code is as such:
>>>>
>>>>
>>>> ad_group_id = '2********63'
>>>> criterion_id = 'lighting'
>>>>
>>>> def main(client):
>>>>     adgroup_criterion_service = 
>>>> client.GetService('AdGroupCriterionService', version='v201603')
>>>>
>>>>
>>>>     bid_modifier = '1.5'
>>>>     operation = {
>>>>                         'xsi_type':'AdGroupCriterionOperation',
>>>>                         'operator': 'ADD',
>>>>
>>>>                         'operand': {
>>>>                                     'xsi_type': 
>>>> 'BiddableAdGroupCriterion',
>>>>                                     'adGroupId': ad_group_id,
>>>>                                     'criterion': {
>>>>                                                     'xsi_type': 
>>>> 'ProductPartition',
>>>>                                                     'id': criterion_id
>>>>                                                 },
>>>>                                     'biddingStrategyConfiguration': {
>>>>                                                                     
>>>>  'bids': [{
>>>>                                                                         
>>>>        'xsi_type': 'CpcBid',
>>>>                                                                         
>>>>        'bid': {
>>>>                                                                         
>>>>                  'microAmount': str(bid_modifier)
>>>>                                                                         
>>>>                },
>>>>                                                                         
>>>>        }]
>>>>                                                                     }
>>>>                                     }
>>>>                         }
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>     result = adgroup_criterion_service.mutate(operation)
>>>>
>>>>
>>>>
>>>>
>>>> if __name__ == '__main__':
>>>>   adwords_client = 
>>>> adwords.AdWordsClient.LoadFromStorage('**********************.yaml')
>>>>   main(adwords_client)
>>>> ---
>>>> Image example
>>>> http://i.imgur.com/p5KhfiG.png
>>>>
>>>>
>>>> I would love to have this work for actual product IDs -- I want to get 
>>>> this working before I attempt to add the ProductOffer -- as I think 
>>>> unmarshalling error means that the schema is incorrect..ideally I can 
>>>> explode all product offer IDs and just set price for those themselves. 
>>>> exact error: suds.WebFault: Server raised fault: 'Unmarshalling Error: 
>>>> For input string: "lighting" '
>>>>
>>>>
>>>>
>>>> On Friday, April 29, 2016 at 7:53:56 PM UTC-5, Anup Pathak wrote:
>>>>>
>>>>>
>>>>>
>>>>> Hi,
>>>>> working code for setting cpc bids for Shopping product partitions, I 
>>>>> hope this will help you.
>>>>>
>>>>>         operation = {
>>>>>                         'xsi_type':'AdGroupCriterionOperation',
>>>>>                         'operator': 'ADD',
>>>>>                         'operand': {
>>>>>                                     'xsi_type': 
>>>>> 'BiddableAdGroupCriterion',
>>>>>                                     'adGroupId': ad_group_id,
>>>>>                                     'criterion': {
>>>>>                                                     'xsi_type': 
>>>>> 'ProductPartition',
>>>>>                                                     'id': criterion_id
>>>>>                                                 },
>>>>>                                     'biddingStrategyConfiguration': {
>>>>>                                                                      
>>>>> 'bids': [{
>>>>>                                                                           
>>>>>      
>>>>> 'xsi_type': 'CpcBid',
>>>>>                                                                           
>>>>>      
>>>>> 'bid': {
>>>>>                                                                           
>>>>>                
>>>>> 'microAmount': str(bid_modifier)
>>>>>                                                                           
>>>>>              
>>>>> },
>>>>>                                                                           
>>>>>      
>>>>> }]
>>>>>                                                                     }
>>>>>                                     }
>>>>>                         }
>>>>>
>>>>> Let me know if you need more help in this!
>>>>>
>>>>> NOTE : your shopping product partition structure should be proper
>>>>>
>>>>> Thank You!
>>>>> Anup Pathak
>>>>>
>>>>> On Saturday, 30 April 2016 05:58:05 UTC+5:30, 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/113ac9a7-071c-422a-aaea-779dc85e2ea3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
  • Re: Script - Goog... Kevin Weitzner
    • Re: Script -... 'Josh Radcliff (AdWords API Team)' via AdWords API Forum
      • Re: Scri... Kevin Weitzner
        • Re: ... 'Josh Radcliff (AdWords API Team)' via AdWords API Forum
          • ... Anup Pathak
            • ... Kevin Weitzner
              • ... Anup Pathak
                • ... Kevin Weitzner
                • ... Kevin Weitzner
                • ... Kevin Weitzner
                • ... Kevin Weitzner
                • ... Kevin Weitzner
          • ... Kevin Weitzner
            • ... 'Josh Radcliff (AdWords API Team)' via AdWords API Forum
              • ... Kevin Weitzner

Reply via email to