Issue trying to create new ad group

71 views
Skip to first unread message

Fernando Oliveira

unread,
Aug 15, 2019, 3:42:08 AM8/15/19
to AdWords API and Google Ads API Forum
Hi guys,

We are trying to do some integrations on Google Ads API using one of your ruby gems. We can already retrieve some data but can’t create things. I would like to know if you can provide us some help.

I am using this gem: https://github.com/googleads/google-ads-ruby
And trying to follow this example: https://github.com/googleads/google-ads-ruby/blob/master/examples/basic_operations/add_ad_groups.rb

This is how my code loooks like:

```ruby
# This seems to be properly configured since we can get data from google ads api
client ||= Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id                = ENV['ADS_CLIENT_ID']
  config.client_secret         = ENV['ADS_CLIENT_SECRET']
  config.refresh_token       = ENV['ADS_REFRESH_TOKEN']
  config.developer_token   = ENV['ADS_DEVELOPER_TOKEN']
  config.login_customer_id = ENV['ADS_LOGIN_CUSTOMER_ID'] # manager user customer_id
end

customer_id = '123123123' # not real
campaign_id = '123123123' # not real

ad_group = client.resource.ad_group do |ag|
  ag.name           = "Test #{(Time.new.to_f * 1000).to_i}"
  ag.status         = :ENABLED
  ag.campaign       = client.path.campaign(customer_id, campaign_id) # this generates "customers/123123123/campaigns/123123123"
  ag.type           = :SEARCH_STANDARD
  ag.cpc_bid_micros = 10_000
end

# Create the operation
ad_group_operation = client.operation.create_resource.ad_group(ad_group)

# Add the ad group.
response = client.service.ad_group.mutate_ad_groups(
    customer_id, [ad_group_operation])

puts "Created ad group #{response.results.first.resource_name}."
```

But I always receive this Exception:

Error: 'GaxError RPC failed, caused by 3:Request contains an invalid argument.'
    Cause: '3:Request contains an invalid argument.'
    Code: 3
    Details: 'Request contains an invalid argument.'
    Request-Id: 'CNtDjMgD6_rAVFBvabbImg'


I've tryed a lot of changes but could not figure out what is wrong.
The above messages are really generic and did not give me much information about the error.

This is the data as we are sending:

AdGroupOperation object:
<Google::Ads::GoogleAds::V2::Services::AdGroupOperation: create: <Google::Ads::GoogleAds::V2::Resources::AdGroup: resource_name: "", id: nil, name: <Google::Protobuf::StringValue: value: "Test 1565829710761">, status: :ENABLED, url_custom_parameters: [], campaign: <Google::Protobuf::StringValue: value: "customers/123123123/campaigns/123123123">, type: :SEARCH_STANDARD, tracking_url_template: nil, cpc_bid_micros: <Google::Protobuf::Int64Value: value: 10000>, cpm_bid_micros: nil, cpv_bid_micros: nil, base_ad_group: nil, percent_cpc_bid_micros: nil, explorer_auto_optimizer_setting: nil, ad_rotation_mode: :UNSPECIFIED, display_custom_bid_dimension: :UNSPECIFIED, final_url_suffix: nil, targeting_setting: nil, target_cpm_micros: nil, target_cpa_micros: nil, effective_target_cpa_micros: nil, effective_target_cpa_source: :UNSPECIFIED, target_roas: nil, effective_target_roas: nil, effective_target_roas_source: :UNSPECIFIED, labels: []>, update: nil, remove: "", update_mask: nil>

Pretty print hash:

{:create=>
  {:resource_name=>"",
   :id=>nil,
   :name=>{:value=>"Test 1565829710761"},
   :status=>:ENABLED,
   :url_custom_parameters=>[],
   :campaign=>{:value=>"customers/123123123/campaigns/123123123"},
   :type=>:SEARCH_STANDARD,
   :tracking_url_template=>nil,
   :cpc_bid_micros=>{:value=>10000},
   :cpm_bid_micros=>nil,
   :cpv_bid_micros=>nil,
   :base_ad_group=>nil,
   :percent_cpc_bid_micros=>nil,
   :explorer_auto_optimizer_setting=>nil,
   :ad_rotation_mode=>:UNSPECIFIED,
   :display_custom_bid_dimension=>:UNSPECIFIED,
   :final_url_suffix=>nil,
   :targeting_setting=>nil,
   :target_cpm_micros=>nil,
   :target_cpa_micros=>nil,
   :effective_target_cpa_micros=>nil,
   :effective_target_cpa_source=>:UNSPECIFIED,
   :target_roas=>nil,
   :effective_target_roas=>nil,
   :effective_target_roas_source=>:UNSPECIFIED,
   :labels=>[]},
 :update=>nil,
 :remove=>"",
 :update_mask=>nil}


Here is the complete response:

(#<struct Struct::BatchResult send_message=true, send_metadata=true, send_close=true, send_status=nil, message=nil, metadata={"request-id"=>"y65rYpIUGBD6OBIQNP5Azw", "date"=>"Thu, 15 Aug 2019 00:47:11 GMT", "alt-svc"=>"quic=\":443\"; ma=2592000; v=\"46,43,39\""}, status=#<struct Struct::Status code=3, details="Request contains an invalid argument.", metadata={"google.ads.googleads.v2.errors.googleadsfailure-bin"=>"\n0\n\x02\b\x01\x12&The error code is not in this version.\x1A\x02*\x00", "grpc-status-details-bin"=>"\b\x03\x12%Request contains an invalid argument.\x1Ay\nCtype.googleapis.com/google.ads.googleads.v2.errors.GoogleAdsFailure\x122\n0\n\x02\b\x01\x12&The error code is not in this version.\x1A\x02*\x00", "request-id"=>"y65rYpIUGBD6OBIQNP5Azw"}>, cancelled=nil>)

Here the request:

<Google::Ads::GoogleAds::V2::Services::MutateAdGroupsRequest: customer_id: "1111111111", operations: [<Google::Ads::GoogleAds::V2::Services::AdGroupOperation: create: <Google::Ads::GoogleAds::V2::Resources::AdGroup: resource_name: "", id: nil, name: <Google::Protobuf::StringValue: value: "Test 1565830277485">, status: :ENABLED, url_custom_parameters: [], campaign: <Google::Protobuf::StringValue: value: "customers/123123123/campaigns/123123123">, type: :SEARCH_STANDARD, tracking_url_template: nil, cpc_bid_micros: <Google::Protobuf::Int64Value: value: 10000>, cpm_bid_micros: nil, cpv_bid_micros: nil, base_ad_group: nil, percent_cpc_bid_micros: nil, explorer_auto_optimizer_setting: nil, ad_rotation_mode: :UNSPECIFIED, display_custom_bid_dimension: :UNSPECIFIED, final_url_suffix: nil, targeting_setting: nil, target_cpm_micros: nil, target_cpa_micros: nil, effective_target_cpa_micros: nil, effective_target_cpa_source: :UNSPECIFIED, target_roas: nil, effective_target_roas: nil, effective_target_roas_source: :UNSPECIFIED, labels: []>, update: nil, remove: "", update_mask: nil>], partial_failure: false, validate_only: false>


request.to_h
=> {:customer_id=>"1111111111",
 :operations=>
  [{:create=>
     {:resource_name=>"",
      :id=>nil,
      :name=>{:value=>"Test 1565830277485"},
      :status=>:ENABLED,
      :url_custom_parameters=>[],
      :campaign=>{:value=>"customers/123123123/campaigns/123123123"},
      :type=>:SEARCH_STANDARD,
      :tracking_url_template=>nil,
      :cpc_bid_micros=>{:value=>10000},
      :cpm_bid_micros=>nil,
      :cpv_bid_micros=>nil,
      :base_ad_group=>nil,
      :percent_cpc_bid_micros=>nil,
      :explorer_auto_optimizer_setting=>nil,
      :ad_rotation_mode=>:UNSPECIFIED,
      :display_custom_bid_dimension=>:UNSPECIFIED,
      :final_url_suffix=>nil,
      :targeting_setting=>nil,
      :target_cpm_micros=>nil,
      :target_cpa_micros=>nil,
      :effective_target_cpa_micros=>nil,
      :effective_target_cpa_source=>:UNSPECIFIED,
      :target_roas=>nil,
      :effective_target_roas=>nil,
      :effective_target_roas_source=>:UNSPECIFIED,
      :labels=>[]},
    :update=>nil,
    :remove=>"",
    :update_mask=>nil}],
 :partial_failure=>false,
 :validate_only=>false}

Thank you.

Fernando Oliveira
Software Engineer @ Tidy.com
Reply all
Reply to author
Forward
0 new messages