Skip to content

Commit

Permalink
AdWords API v201809 release.
Browse files Browse the repository at this point in the history
  • Loading branch information
mcloonan committed Sep 20, 2018
1 parent 00db821 commit 40349ee
Show file tree
Hide file tree
Showing 217 changed files with 19,285 additions and 34 deletions.
3 changes: 3 additions & 0 deletions adwords_api/ChangeLog
@@ -1,3 +1,6 @@
1.3.1:
- Support and examples for v201809.

1.3.0:
- Remove deprecated API version v201710.
- Minor fix to paging through landscape pages using ServiceQuery.
Expand Down
Expand Up @@ -43,13 +43,7 @@ def create_account()
# Prepare operation to create an account.
operation = {
:operator => 'ADD',
:operand => customer,
# For whitelisted users only, uncomment the invitee_email and invitee_role
# to invite a user to have access to an account on an ADD. An email
# will be sent inviting the user to have access to the newly created
# account.
# :invitee_email => 'invited_user1@example.com',
# :invitee_role => 'ADMINISTRATIVE'
:operand => customer
}

# Create the account. It is possible to create multiple accounts with one
Expand Down
Expand Up @@ -43,13 +43,7 @@ def create_account()
# Prepare operation to create an account.
operation = {
:operator => 'ADD',
:operand => customer,
# For whitelisted users only, uncomment the invitee_email and invitee_role
# to invite a user to have access to an account on an ADD. An email
# will be sent inviting the user to have access to the newly created
# account.
# :invitee_email => 'invited_user1@example.com',
# :invitee_role => 'ADMINISTRATIVE'
:operand => customer
}

# Create the account. It is possible to create multiple accounts with one
Expand Down
@@ -0,0 +1,91 @@
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Copyright:: Copyright 2016, Google Inc. All Rights Reserved.
#
# License:: Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example accepts a pending invitation to link your AdWords account to a
# Google Merchant Center account.

require 'adwords_api'

def accept_service_link(service_link_id)
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
# when called without parameters.
adwords = AdwordsApi::Api.new

# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
# the configuration file or provide your own logger:
# adwords.logger = Logger.new('adwords_xml.log')

# Get the CustomerService.
customer_srv = adwords.service(:CustomerService, API_VERSION)

# Create the operation to set the status to ACTIVE.
operation = {
:operator => 'SET',
:operand => {
:service_link_id => service_link_id,
:service_type => 'MERCHANT_CENTER',
:link_status => 'ACTIVE'
}
}

# Update the service link.
mutated_service_links = customer_srv.mutate_service_links([operation])

# Display the results.
mutated_service_links.each do |mutated_service_link|
puts ("Service link with service link ID %d, type '%s' updated to status:" +
"%s.") % [
mutated_service_link[:service_link_id],
mutated_service_link[:service_type],
mutated_service_link[:link_status]
]
end
end

if __FILE__ == $0
API_VERSION = :v201809

begin
service_link_id = 'INSERT_SERVICE_LINK_ID_HERE'.to_i

accept_service_link(service_link_id)

# Authorization error.
rescue AdsCommon::Errors::OAuth2VerificationRequired => e
puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
"OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
"to retrieve and store OAuth2 tokens."
puts "See this wiki page for more details:\n\n " +
'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'

# HTTP errors.
rescue AdsCommon::Errors::HttpError => e
puts "HTTP Error: %s" % e

# API errors.
rescue AdwordsApi::Errors::ApiException => e
puts "Message: %s" % e.message
puts 'Errors:'
e.errors.each_with_index do |error, index|
puts "\tError [%d]:" % (index + 1)
error.each do |field, value|
puts "\t\t%s: %s" % [field, value]
end
end
end
end
88 changes: 88 additions & 0 deletions adwords_api/examples/v201809/account_management/create_account.rb
@@ -0,0 +1,88 @@
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
#
# License:: Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example illustrates how to create an account. Note by default this
# account will only be accessible via parent AdWords manager account.

require 'adwords_api'
require 'adwords_api/utils'

def create_account()
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
# when called without parameters.
adwords = AdwordsApi::Api.new

# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
# the configuration file or provide your own logger:
# adwords.logger = Logger.new('adwords_xml.log')

managed_customer_srv = adwords.service(:ManagedCustomerService, API_VERSION)

# Create a local Customer object.
customer = {
:name => 'Account created with ManagedCustomerService',
:currency_code => 'EUR',
:date_time_zone => 'Europe/London'
}

# Prepare operation to create an account.
operation = {
:operator => 'ADD',
:operand => customer
}

# Create the account. It is possible to create multiple accounts with one
# request by sending an array of operations.
response = managed_customer_srv.mutate([operation])

response[:value].each do |new_account|
puts "Account with customer ID '%s' was successfully created." %
AdwordsApi::Utils.format_id(new_account[:customer_id])
end
end

if __FILE__ == $0
API_VERSION = :v201809

begin
create_account()

# Authorization error.
rescue AdsCommon::Errors::OAuth2VerificationRequired => e
puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
"OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
"to retrieve and store OAuth2 tokens."
puts "See this wiki page for more details:\n\n " +
'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'

# HTTP errors.
rescue AdsCommon::Errors::HttpError => e
puts "HTTP Error: %s" % e

# API errors.
rescue AdwordsApi::Errors::ApiException => e
puts "Message: %s" % e.message
puts 'Errors:'
e.errors.each_with_index do |error, index|
puts "\tError [%d]:" % (index + 1)
error.each do |field, value|
puts "\t\t%s: %s" % [field, value]
end
end
end
end
135 changes: 135 additions & 0 deletions adwords_api/examples/v201809/account_management/get_account_changes.rb
@@ -0,0 +1,135 @@
#!/usr/bin/env ruby
# Encoding: utf-8
#
# Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
#
# License:: Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This example gets all account changes that happened within the last 24 hours,
# for all your campaigns.

require 'adwords_api'
require 'date'
require 'pp'

def get_account_changes()
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
# when called without parameters.
adwords = AdwordsApi::Api.new

# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
# the configuration file or provide your own logger:
# adwords.logger = Logger.new('adwords_xml.log')

campaign_srv = adwords.service(:CampaignService, API_VERSION)
customer_sync_srv = adwords.service(:CustomerSyncService, API_VERSION)

today_at_midnight = DateTime.parse(Date.today.to_s)
yesterday_at_midnight = DateTime.parse((Date.today - 1).to_s)
min_date_time = yesterday_at_midnight.strftime("%Y%m%d %H%M%S")
max_date_time = today_at_midnight.strftime("%Y%m%d %H%M%S")

# Get all the campaigns for this account.
selector = {
:fields => ['Id']
}
response = campaign_srv.get(selector)

campaign_ids = []

if response and response[:entries]
campaign_ids = response[:entries].map { |campaign| campaign[:id] }
else
raise StandardError, 'No campaigns were found.'
end

# Create a selector for CustomerSyncService.
selector = {
:campaign_ids => campaign_ids,
:date_time_range => {
:min => min_date_time,
:max => max_date_time
}
}

# Get all account changes for the campaigns.
campaign_changes = customer_sync_srv.get(selector)

# Display changes.
if campaign_changes
puts "Most recent change: %s" % campaign_changes[:last_change_timestamp]
campaign_changes[:changed_campaigns].each do |campaign|
puts "Campaign with ID %d was changed:" % campaign[:campaign_id]
puts "\tCampaign change status: '%s'" % campaign[:campaign_change_status]
unless ['NEW', 'FIELDS_UNCHANGED'].include?(
campaign[:campaign_change_status])
puts "\tAdded campaign criteria: '%s'" %
campaign[:added_campaign_criteria].pretty_inspect.chomp
puts "\tRemoved campaign criteria: '%s'" %
campaign[:removed_campaign_criteria].pretty_inspect.chomp

if campaign[:changed_ad_groups]
campaign[:changed_ad_groups].each do |ad_group|
puts "\tAd group with ID %d was changed:" % ad_group[:ad_group_id]
puts "\t\tAd group changed status: '%s'" %
ad_group[:ad_group_change_status]
unless ['NEW', 'FIELDS_UNCHANGED'].include?(
ad_group[:ad_group_change_status])
puts "\t\tAds changed: '%s'" %
ad_group[:changed_ads].pretty_inspect.chomp
puts "\t\tCriteria changed: '%s'" %
ad_group[:changed_criteria].pretty_inspect.chomp
puts "\t\tCriteria removed: '%s'" %
ad_group[:removed_criteria].pretty_inspect.chomp
end
end
end
end
puts
end
else
puts 'No account changes were found.'
end
end

if __FILE__ == $0
API_VERSION = :v201809

begin
get_account_changes()

# Authorization error.
rescue AdsCommon::Errors::OAuth2VerificationRequired => e
puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
"OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
"to retrieve and store OAuth2 tokens."
puts "See this wiki page for more details:\n\n " +
'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'

# HTTP errors.
rescue AdsCommon::Errors::HttpError => e
puts "HTTP Error: %s" % e

# API errors.
rescue AdwordsApi::Errors::ApiException => e
puts "Message: %s" % e.message
puts 'Errors:'
e.errors.each_with_index do |error, index|
puts "\tError [%d]:" % (index + 1)
error.each do |field, value|
puts "\t\t%s: %s" % [field, value]
end
end
end
end

0 comments on commit 40349ee

Please sign in to comment.