google-adwords-api 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +4 -0
- data/README +2 -1
- data/examples/v201109/account_management/create_account.rb +2 -2
- data/examples/v201109/account_management/get_account_alerts.rb +3 -3
- data/examples/v201109/account_management/get_account_changes.rb +2 -2
- data/examples/v201109/account_management/get_account_hierarchy.rb +2 -2
- data/examples/v201109/account_management/get_client_customer_id.rb +6 -8
- data/examples/v201109/account_management/get_client_unit_usage.rb +6 -7
- data/examples/v201109/basic_operations/add_ad_groups.rb +111 -0
- data/examples/v201109/basic_operations/add_campaigns.rb +125 -0
- data/examples/v201109/basic_operations/add_keywords.rb +16 -11
- data/examples/v201109/basic_operations/add_text_ads.rb +23 -19
- data/examples/v201109/basic_operations/delete_ad.rb +7 -7
- data/examples/v201109/basic_operations/delete_ad_group.rb +7 -7
- data/examples/v201109/basic_operations/delete_campaign.rb +7 -7
- data/examples/v201109/basic_operations/delete_keyword.rb +7 -7
- data/examples/v201109/basic_operations/get_ad_groups.rb +7 -7
- data/examples/v201109/basic_operations/get_campaigns.rb +3 -3
- data/examples/v201109/basic_operations/get_keywords.rb +7 -7
- data/examples/v201109/basic_operations/get_text_ads.rb +7 -7
- data/examples/v201109/basic_operations/pause_ad.rb +7 -7
- data/examples/v201109/basic_operations/update_ad_group.rb +6 -6
- data/examples/v201109/basic_operations/update_campaign.rb +6 -6
- data/examples/v201109/basic_operations/update_keyword.rb +7 -7
- data/examples/v201109/campaign_management/add_experiment.rb +14 -9
- data/examples/v201109/campaign_management/add_keywords_in_bulk.rb +5 -5
- data/examples/v201109/campaign_management/add_location_extension.rb +13 -7
- data/examples/v201109/campaign_management/add_location_extension_override.rb +7 -7
- data/examples/v201109/campaign_management/get_all_disapproved_ads.rb +6 -6
- data/examples/v201109/campaign_management/promote_experiment.rb +5 -6
- data/examples/v201109/campaign_management/set_ad_parameters.rb +8 -8
- data/examples/v201109/campaign_management/validate_text_ad.rb +7 -9
- data/examples/v201109/error_handling/handle_captcha_challenge.rb +3 -4
- data/examples/v201109/error_handling/handle_partial_failures.rb +5 -6
- data/examples/v201109/error_handling/handle_policy_violation_error.rb +5 -6
- data/examples/v201109/error_handling/handle_two_factor_authorization_error.rb +2 -2
- data/examples/v201109/misc/get_all_images_and_videos.rb +3 -3
- data/examples/v201109/misc/upload_image.rb +2 -2
- data/examples/v201109/misc/use_oauth.rb +3 -3
- data/examples/v201109/optimization/estimate_keyword_traffic.rb +2 -2
- data/examples/v201109/optimization/get_keyword_bid_simulations.rb +6 -7
- data/examples/v201109/optimization/get_keyword_ideas.rb +6 -7
- data/examples/v201109/optimization/get_placement_ideas.rb +6 -7
- data/examples/v201109/remarketing/add_audience.rb +5 -3
- data/examples/v201109/remarketing/add_conversion_tracker.rb +12 -3
- data/examples/v201109/reporting/download_criteria_report.rb +7 -8
- data/examples/v201109/reporting/download_defined_report.rb +6 -7
- data/examples/v201109/reporting/get_campaign_stats.rb +105 -0
- data/examples/v201109/reporting/get_defined_reports.rb +2 -2
- data/examples/v201109/reporting/get_report_fields.rb +6 -7
- data/examples/v201109/reporting/parallel_report_download.rb +8 -8
- data/examples/v201109/targeting/add_campaign_targeting_criteria.rb +5 -6
- data/examples/v201109/targeting/get_campaign_targeting_criteria.rb +7 -8
- data/examples/v201109/targeting/get_targetable_languages_and_carriers.rb +2 -2
- data/examples/v201109/targeting/lookup_location.rb +2 -2
- data/lib/adwords_api/version.rb +1 -1
- data/test/examples/v201109/test_account_management.rb +60 -0
- data/test/examples/v201109/test_basic_operations.rb +172 -0
- data/test/examples/v201109/test_campaign_management.rb +116 -0
- data/test/examples/v201109/test_error_handling.rb +63 -0
- data/test/examples/v201109/test_misc.rb +45 -0
- data/test/examples/v201109/test_optimization.rb +63 -0
- data/test/examples/v201109/test_remarketing.rb +39 -0
- data/test/examples/v201109/test_reporting.rb +89 -0
- data/test/examples/v201109/test_targeting.rb +60 -0
- data/test/examples/v201109/utils.rb +239 -0
- data/test/suite_exampletests.rb +31 -0
- metadata +18 -6
- data/examples/v201109/basic_operations/add_ad_group.rb +0 -89
- data/examples/v201109/basic_operations/add_campaign.rb +0 -99
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def add_text_ads()
|
28
|
+
def add_text_ads(ad_group_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,25 +36,27 @@ def add_text_ads()
|
|
38
36
|
|
39
37
|
ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
|
40
38
|
|
41
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
42
|
-
|
43
39
|
# Create text ads.
|
44
40
|
# The 'xsi_type' field allows you to specify the xsi:type of the object
|
45
41
|
# being created. It's only necessary when you must provide an explicit
|
46
42
|
# type that the client library can't infer.
|
47
43
|
text_ads = [
|
48
|
-
{
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
44
|
+
{
|
45
|
+
:xsi_type => 'TextAd',
|
46
|
+
:headline => 'Luxury Cruise to Mars',
|
47
|
+
:description1 => 'Visit the Red Planet in style.',
|
48
|
+
:description2 => 'Low-gravity fun for everyone!',
|
49
|
+
:url => 'http://www.example.com',
|
50
|
+
:display_url => 'www.example.com'
|
51
|
+
},
|
52
|
+
{
|
53
|
+
:xsi_type => 'TextAd',
|
54
|
+
:headline => 'Luxury Cruise to Mars',
|
55
|
+
:description1 => 'Enjoy your stay at Red Planet.',
|
56
|
+
:description2 => 'Buy your tickets now!',
|
57
|
+
:url => 'http://www.example.com',
|
58
|
+
:display_url => 'www.example.com'
|
59
|
+
}
|
60
60
|
]
|
61
61
|
|
62
62
|
# Create ad 'ADD' operations.
|
@@ -75,13 +75,17 @@ def add_text_ads()
|
|
75
75
|
[ad[:ad][:id], ad[:ad][:ad_type], ad[:status]]
|
76
76
|
end
|
77
77
|
else
|
78
|
-
|
78
|
+
raise StandardError, 'No ads were added.'
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
82
|
if __FILE__ == $0
|
83
|
+
API_VERSION = :v201109
|
84
|
+
|
83
85
|
begin
|
84
|
-
|
86
|
+
# Ad group ID to add text ads to.
|
87
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
88
|
+
add_text_ads(ad_group_id)
|
85
89
|
|
86
90
|
# HTTP errors.
|
87
91
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def delete_ad()
|
28
|
+
def delete_ad(ad_group_id, ad_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,9 +36,6 @@ def delete_ad()
|
|
38
36
|
|
39
37
|
ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
|
40
38
|
|
41
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
42
|
-
ad_id = 'INSERT_AD_ID_HERE'.to_i
|
43
|
-
|
44
39
|
# Prepare for deleting ad.
|
45
40
|
operation = {
|
46
41
|
:operator => 'REMOVE',
|
@@ -64,8 +59,13 @@ def delete_ad()
|
|
64
59
|
end
|
65
60
|
|
66
61
|
if __FILE__ == $0
|
62
|
+
API_VERSION = :v201109
|
63
|
+
|
67
64
|
begin
|
68
|
-
|
65
|
+
# IDs of an ad to delete and its ad group.
|
66
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
67
|
+
ad_id = 'INSERT_AD_ID_HERE'.to_i
|
68
|
+
delete_ad(ad_group_id, ad_id)
|
69
69
|
|
70
70
|
# HTTP errors.
|
71
71
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def delete_ad_group()
|
28
|
+
def delete_ad_group(ad_group_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,9 +36,7 @@ def delete_ad_group()
|
|
38
36
|
|
39
37
|
ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
# Retrieve the ad group to obtain it's name. This is optional but recommended
|
39
|
+
# Retrieve the ad group to obtain its name. This is optional but recommended
|
44
40
|
# to keep deleted objects searchable. In production the name is already known
|
45
41
|
# in most cases.
|
46
42
|
selector = {
|
@@ -81,8 +77,12 @@ def delete_ad_group()
|
|
81
77
|
end
|
82
78
|
|
83
79
|
if __FILE__ == $0
|
80
|
+
API_VERSION = :v201109
|
81
|
+
|
84
82
|
begin
|
85
|
-
|
83
|
+
# ID of an ad group to delete.
|
84
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
85
|
+
delete_ad_group(ad_group_id)
|
86
86
|
|
87
87
|
# HTTP errors.
|
88
88
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def delete_campaign()
|
28
|
+
def delete_campaign(campaign_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,9 +36,7 @@ def delete_campaign()
|
|
38
36
|
|
39
37
|
campaign_srv = adwords.service(:CampaignService, API_VERSION)
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
# Retrieve the campaign to obtain it's name. This is optional but recommended
|
39
|
+
# Retrieve the campaign to obtain its name. This is optional but recommended
|
44
40
|
# to keep deleted objects searchable. In production the name is already known
|
45
41
|
# in most cases.
|
46
42
|
selector = {
|
@@ -82,8 +78,12 @@ def delete_campaign()
|
|
82
78
|
end
|
83
79
|
|
84
80
|
if __FILE__ == $0
|
81
|
+
API_VERSION = :v201109
|
82
|
+
|
85
83
|
begin
|
86
|
-
|
84
|
+
# ID of a campaign to delete.
|
85
|
+
campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
|
86
|
+
delete_campaign(campaign_id)
|
87
87
|
|
88
88
|
# HTTP errors.
|
89
89
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def delete_keyword()
|
28
|
+
def delete_keyword(ad_group_id, criterion_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -39,9 +37,6 @@ def delete_keyword()
|
|
39
37
|
ad_group_criterion_srv =
|
40
38
|
adwords.service(:AdGroupCriterionService, API_VERSION)
|
41
39
|
|
42
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
43
|
-
criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
|
44
|
-
|
45
40
|
# Prepare for deleting keyword.
|
46
41
|
operation = {
|
47
42
|
:operator => 'REMOVE',
|
@@ -69,8 +64,13 @@ def delete_keyword()
|
|
69
64
|
end
|
70
65
|
|
71
66
|
if __FILE__ == $0
|
67
|
+
API_VERSION = :v201109
|
68
|
+
|
72
69
|
begin
|
73
|
-
|
70
|
+
# IDs of criterion to delete and its ad group.
|
71
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
72
|
+
criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
|
73
|
+
delete_keyword(ad_group_id, criterion_id)
|
74
74
|
|
75
75
|
# HTTP errors.
|
76
76
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,10 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
PAGE_SIZE = 500
|
30
|
-
|
31
|
-
def get_ad_groups()
|
28
|
+
def get_ad_groups(campaign_id)
|
32
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
33
30
|
# when called without parameters.
|
34
31
|
adwords = AdwordsApi::Api.new
|
@@ -39,8 +36,6 @@ def get_ad_groups()
|
|
39
36
|
|
40
37
|
ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
|
41
38
|
|
42
|
-
campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
|
43
|
-
|
44
39
|
# Get all the ad groups for this campaign.
|
45
40
|
selector = {
|
46
41
|
:fields => ['Id', 'Name'],
|
@@ -77,8 +72,13 @@ def get_ad_groups()
|
|
77
72
|
end
|
78
73
|
|
79
74
|
if __FILE__ == $0
|
75
|
+
API_VERSION = :v201109
|
76
|
+
PAGE_SIZE = 500
|
77
|
+
|
80
78
|
begin
|
81
|
-
|
79
|
+
# Campaign ID to get ad groups for.
|
80
|
+
campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
|
81
|
+
get_ad_groups(campaign_id)
|
82
82
|
|
83
83
|
# HTTP errors.
|
84
84
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -24,9 +24,6 @@
|
|
24
24
|
|
25
25
|
require 'adwords_api'
|
26
26
|
|
27
|
-
API_VERSION = :v201109
|
28
|
-
PAGE_SIZE = 500
|
29
|
-
|
30
27
|
def get_campaigns()
|
31
28
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
29
|
# when called without parameters.
|
@@ -72,6 +69,9 @@ def get_campaigns()
|
|
72
69
|
end
|
73
70
|
|
74
71
|
if __FILE__ == $0
|
72
|
+
API_VERSION = :v201109
|
73
|
+
PAGE_SIZE = 500
|
74
|
+
|
75
75
|
begin
|
76
76
|
get_campaigns()
|
77
77
|
|
@@ -25,10 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
PAGE_SIZE = 500
|
30
|
-
|
31
|
-
def get_keywords()
|
28
|
+
def get_keywords(ad_group_id)
|
32
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
33
30
|
# when called without parameters.
|
34
31
|
adwords = AdwordsApi::Api.new
|
@@ -40,8 +37,6 @@ def get_keywords()
|
|
40
37
|
ad_group_criterion_srv =
|
41
38
|
adwords.service(:AdGroupCriterionService, API_VERSION)
|
42
39
|
|
43
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
44
|
-
|
45
40
|
# Get all keywords for this ad group.
|
46
41
|
selector = {
|
47
42
|
:fields => ['Id', 'CriteriaType', 'KeywordText'],
|
@@ -83,8 +78,13 @@ def get_keywords()
|
|
83
78
|
end
|
84
79
|
|
85
80
|
if __FILE__ == $0
|
81
|
+
API_VERSION = :v201109
|
82
|
+
PAGE_SIZE = 500
|
83
|
+
|
86
84
|
begin
|
87
|
-
|
85
|
+
# Ad group ID to get keywords for.
|
86
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
87
|
+
get_keywords(ad_group_id)
|
88
88
|
|
89
89
|
# HTTP errors.
|
90
90
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,10 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
PAGE_SIZE = 500
|
30
|
-
|
31
|
-
def get_text_ads()
|
28
|
+
def get_text_ads(ad_group_id)
|
32
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
33
30
|
# when called without parameters.
|
34
31
|
adwords = AdwordsApi::Api.new
|
@@ -39,8 +36,6 @@ def get_text_ads()
|
|
39
36
|
|
40
37
|
ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
|
41
38
|
|
42
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
43
|
-
|
44
39
|
# Get all the ads for this ad group.
|
45
40
|
selector = {
|
46
41
|
:fields => ['Id', 'Status', 'AdType'],
|
@@ -85,8 +80,13 @@ def get_text_ads()
|
|
85
80
|
end
|
86
81
|
|
87
82
|
if __FILE__ == $0
|
83
|
+
API_VERSION = :v201109
|
84
|
+
PAGE_SIZE = 500
|
85
|
+
|
88
86
|
begin
|
89
|
-
|
87
|
+
# Ad group ID to get text ads for.
|
88
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
89
|
+
get_text_ads(ad_group_id)
|
90
90
|
|
91
91
|
# HTTP errors.
|
92
92
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def pause_ad()
|
28
|
+
def pause_ad(ad_group_id, ad_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,9 +36,6 @@ def pause_ad()
|
|
38
36
|
|
39
37
|
ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
|
40
38
|
|
41
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
42
|
-
ad_id = 'INSERT_AD_ID_HERE'.to_i
|
43
|
-
|
44
39
|
# Prepare operation for updating ad.
|
45
40
|
operation = {
|
46
41
|
:operator => 'SET',
|
@@ -63,8 +58,13 @@ def pause_ad()
|
|
63
58
|
end
|
64
59
|
|
65
60
|
if __FILE__ == $0
|
61
|
+
API_VERSION = :v201109
|
62
|
+
|
66
63
|
begin
|
67
|
-
|
64
|
+
# IDs of ad to pause and its ad group.
|
65
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
66
|
+
ad_id = 'INSERT_AD_ID_HERE'.to_i
|
67
|
+
pause_ad(ad_group_id, ad_id)
|
68
68
|
|
69
69
|
# HTTP errors.
|
70
70
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def update_ad_group()
|
28
|
+
def update_ad_group(ad_group_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,8 +36,6 @@ def update_ad_group()
|
|
38
36
|
|
39
37
|
ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
|
40
38
|
|
41
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
42
|
-
|
43
39
|
# Prepare for updating ad group.
|
44
40
|
operation = {
|
45
41
|
:operator => 'SET',
|
@@ -60,8 +56,12 @@ def update_ad_group()
|
|
60
56
|
end
|
61
57
|
|
62
58
|
if __FILE__ == $0
|
59
|
+
API_VERSION = :v201109
|
60
|
+
|
63
61
|
begin
|
64
|
-
|
62
|
+
# ID of an ad group to update.
|
63
|
+
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
64
|
+
update_ad_group(ad_group_id)
|
65
65
|
|
66
66
|
# HTTP errors.
|
67
67
|
rescue AdsCommon::Errors::HttpError => e
|
@@ -25,9 +25,7 @@
|
|
25
25
|
|
26
26
|
require 'adwords_api'
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
def update_campaign()
|
28
|
+
def update_campaign(campaign_id)
|
31
29
|
# AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
|
32
30
|
# when called without parameters.
|
33
31
|
adwords = AdwordsApi::Api.new
|
@@ -38,8 +36,6 @@ def update_campaign()
|
|
38
36
|
|
39
37
|
campaign_srv = adwords.service(:CampaignService, API_VERSION)
|
40
38
|
|
41
|
-
campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
|
42
|
-
|
43
39
|
# Prepare for updating campaign.
|
44
40
|
operation = {
|
45
41
|
:operator => 'SET',
|
@@ -63,8 +59,12 @@ def update_campaign()
|
|
63
59
|
end
|
64
60
|
|
65
61
|
if __FILE__ == $0
|
62
|
+
API_VERSION = :v201109
|
63
|
+
|
66
64
|
begin
|
67
|
-
|
65
|
+
# ID of a campaign to update.
|
66
|
+
campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
|
67
|
+
update_campaign(campaign_id)
|
68
68
|
|
69
69
|
# HTTP errors.
|
70
70
|
rescue AdsCommon::Errors::HttpError => e
|