Thanks for your response Mitchell. I've tried what you suggested but it 
still fails to update. Here's the code I'm now trying out, based on the 
example you sent me:

import argparse
import sys

from google.api_core import protobuf_helpers
from google.ads.google_ads.client import GoogleAdsClient
from google.ads.google_ads.util import ResourceName

def main(client, customer_id, ad_group_id, criterion_id):
    agc_service = client.get_service('AdGroupCriterionService', version='v3'
)

    ad_group_criterion_operation = client.get_type(
'AdGroupCriterionOperation',
                                                   version='v3')

    ad_group_criterion = ad_group_criterion_operation.update
    ad_group_criterion.resource_name = agc_service.ad_group_criteria_path(
        customer_id, ResourceName.format_composite(ad_group_id, 
criterion_id))
    ad_group_criterion.cpc_bid_micros.value = 0
    fm = protobuf_helpers.field_mask(None, ad_group_criterion)
    ad_group_criterion_operation.update_mask.CopyFrom(fm)

     try:
         agc_response = agc_service.mutate_ad_group_criteria(
             customer_id, [ad_group_criterion_operation])
     except google.ads.google_ads.errors.GoogleAdsException as ex:
         print('Request with ID "%s" failed with status "%s" and includes 
the '
               'following errors:' % (ex.request_id, ex.error.code().name))
         for error in ex.failure.errors:
             print('\tError with message "%s".' % error.message)
             if error.location:
                 for field_path_element in error.location.
field_path_elements:
                     print('\t\tOn field: %s' % field_path_element.
field_name)
         sys.exit(1)


if __name__ == '__main__':
    google_ads_client = GoogleAdsClient.load_from_storage()
    parser = argparse.ArgumentParser(
        description=('Pauses an ad in the specified customer\'s ad group.'))
    parser.add_argument('-c', '--customer_id', type=str,
                        required=True, help='The Google Ads customer ID.')
    parser.add_argument('-a', '--ad_group_id', type=str,
                        required=True, help='The ad group ID.')
    parser.add_argument('-k', '--criterion_id', type=str,
                        required=True, help='The criterion ID, or keyword 
ID.')
    args = parser.parse_args()

    main(google_ads_client, args.customer_id, args.ad_group_id,
        args.criterion_id)

Here's what the log says after I run this for an update for a single 
keyword:

results{
  resource_name: 
"customers/{customer_id}/adGroupCriteria/{ad_group_id}~{criterion_id}"

}

Looking at the keyword in the Ads UI after running this Python file, the 
keyword-specific bid is still there and unchanged. Is setting 
cpc_bid_micros to 0 in the field mask an incorrect way of going about 
removing these bids? Do I need to set it to a "default" or "None"-type 
value? Thanks.

On Tuesday, March 24, 2020 at 10:29:50 AM UTC-4, adsapiforumadvisor wrote:
>
> Hi Michael,
>
> Thank you for reaching out. You need to use a FieldMask 
> <https://developers.google.com/google-ads/api/docs/client-libs/python/field-masks>
>  
> to update this value to default. You should use this example 
> <https://developers.google.com/google-ads/api/docs/samples/update-keyword#python>
>  
> and create a new FieldMask with the path "cpc_bid_micros" and add that to 
> the AdGroupCriterionOperation.
>
> The logs should look like this:
> operations {
>   update {
>     resource_name: 
> "customers/xxxxxxxxxx/adGroupCriteria/xxxxxxxxxx~xxxxxxxx"
>     status: ENABLED
>   }
>   update_mask {
>     paths: "cpc_bid_micros"
>   }
> }
>
> Regards,
> Mitchell
> Google Ads API Team
>
> ref:_00D1U1174p._5001UXWHab:ref
>

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads 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 and Google Ads API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/d0a39578-c3b7-43a0-97cd-4110674f04c6%40googlegroups.com.

Reply via email to