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.
Files changed (70) hide show
  1. data/ChangeLog +4 -0
  2. data/README +2 -1
  3. data/examples/v201109/account_management/create_account.rb +2 -2
  4. data/examples/v201109/account_management/get_account_alerts.rb +3 -3
  5. data/examples/v201109/account_management/get_account_changes.rb +2 -2
  6. data/examples/v201109/account_management/get_account_hierarchy.rb +2 -2
  7. data/examples/v201109/account_management/get_client_customer_id.rb +6 -8
  8. data/examples/v201109/account_management/get_client_unit_usage.rb +6 -7
  9. data/examples/v201109/basic_operations/add_ad_groups.rb +111 -0
  10. data/examples/v201109/basic_operations/add_campaigns.rb +125 -0
  11. data/examples/v201109/basic_operations/add_keywords.rb +16 -11
  12. data/examples/v201109/basic_operations/add_text_ads.rb +23 -19
  13. data/examples/v201109/basic_operations/delete_ad.rb +7 -7
  14. data/examples/v201109/basic_operations/delete_ad_group.rb +7 -7
  15. data/examples/v201109/basic_operations/delete_campaign.rb +7 -7
  16. data/examples/v201109/basic_operations/delete_keyword.rb +7 -7
  17. data/examples/v201109/basic_operations/get_ad_groups.rb +7 -7
  18. data/examples/v201109/basic_operations/get_campaigns.rb +3 -3
  19. data/examples/v201109/basic_operations/get_keywords.rb +7 -7
  20. data/examples/v201109/basic_operations/get_text_ads.rb +7 -7
  21. data/examples/v201109/basic_operations/pause_ad.rb +7 -7
  22. data/examples/v201109/basic_operations/update_ad_group.rb +6 -6
  23. data/examples/v201109/basic_operations/update_campaign.rb +6 -6
  24. data/examples/v201109/basic_operations/update_keyword.rb +7 -7
  25. data/examples/v201109/campaign_management/add_experiment.rb +14 -9
  26. data/examples/v201109/campaign_management/add_keywords_in_bulk.rb +5 -5
  27. data/examples/v201109/campaign_management/add_location_extension.rb +13 -7
  28. data/examples/v201109/campaign_management/add_location_extension_override.rb +7 -7
  29. data/examples/v201109/campaign_management/get_all_disapproved_ads.rb +6 -6
  30. data/examples/v201109/campaign_management/promote_experiment.rb +5 -6
  31. data/examples/v201109/campaign_management/set_ad_parameters.rb +8 -8
  32. data/examples/v201109/campaign_management/validate_text_ad.rb +7 -9
  33. data/examples/v201109/error_handling/handle_captcha_challenge.rb +3 -4
  34. data/examples/v201109/error_handling/handle_partial_failures.rb +5 -6
  35. data/examples/v201109/error_handling/handle_policy_violation_error.rb +5 -6
  36. data/examples/v201109/error_handling/handle_two_factor_authorization_error.rb +2 -2
  37. data/examples/v201109/misc/get_all_images_and_videos.rb +3 -3
  38. data/examples/v201109/misc/upload_image.rb +2 -2
  39. data/examples/v201109/misc/use_oauth.rb +3 -3
  40. data/examples/v201109/optimization/estimate_keyword_traffic.rb +2 -2
  41. data/examples/v201109/optimization/get_keyword_bid_simulations.rb +6 -7
  42. data/examples/v201109/optimization/get_keyword_ideas.rb +6 -7
  43. data/examples/v201109/optimization/get_placement_ideas.rb +6 -7
  44. data/examples/v201109/remarketing/add_audience.rb +5 -3
  45. data/examples/v201109/remarketing/add_conversion_tracker.rb +12 -3
  46. data/examples/v201109/reporting/download_criteria_report.rb +7 -8
  47. data/examples/v201109/reporting/download_defined_report.rb +6 -7
  48. data/examples/v201109/reporting/get_campaign_stats.rb +105 -0
  49. data/examples/v201109/reporting/get_defined_reports.rb +2 -2
  50. data/examples/v201109/reporting/get_report_fields.rb +6 -7
  51. data/examples/v201109/reporting/parallel_report_download.rb +8 -8
  52. data/examples/v201109/targeting/add_campaign_targeting_criteria.rb +5 -6
  53. data/examples/v201109/targeting/get_campaign_targeting_criteria.rb +7 -8
  54. data/examples/v201109/targeting/get_targetable_languages_and_carriers.rb +2 -2
  55. data/examples/v201109/targeting/lookup_location.rb +2 -2
  56. data/lib/adwords_api/version.rb +1 -1
  57. data/test/examples/v201109/test_account_management.rb +60 -0
  58. data/test/examples/v201109/test_basic_operations.rb +172 -0
  59. data/test/examples/v201109/test_campaign_management.rb +116 -0
  60. data/test/examples/v201109/test_error_handling.rb +63 -0
  61. data/test/examples/v201109/test_misc.rb +45 -0
  62. data/test/examples/v201109/test_optimization.rb +63 -0
  63. data/test/examples/v201109/test_remarketing.rb +39 -0
  64. data/test/examples/v201109/test_reporting.rb +89 -0
  65. data/test/examples/v201109/test_targeting.rb +60 -0
  66. data/test/examples/v201109/utils.rb +239 -0
  67. data/test/suite_exampletests.rb +31 -0
  68. metadata +18 -6
  69. data/examples/v201109/basic_operations/add_ad_group.rb +0 -89
  70. data/examples/v201109/basic_operations/add_campaign.rb +0 -99
@@ -25,9 +25,7 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def update_keyword()
28
+ def update_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 update_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 updating a keyword.
46
41
  operation = {
47
42
  :operator => 'SET',
@@ -78,8 +73,13 @@ def update_keyword()
78
73
  end
79
74
 
80
75
  if __FILE__ == $0
76
+ API_VERSION = :v201109
77
+
81
78
  begin
82
- update_keyword()
79
+ # IDs of a criterion to update and its ad group.
80
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
81
+ criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
82
+ update_keyword(ad_group_id, criterion_id)
83
83
 
84
84
  # HTTP errors.
85
85
  rescue AdsCommon::Errors::HttpError => e
@@ -27,10 +27,9 @@
27
27
  # Tags: ExperimentService.mutate
28
28
 
29
29
  require 'adwords_api'
30
+ require 'date'
30
31
 
31
- API_VERSION = :v201109
32
-
33
- def add_experiment()
32
+ def add_experiment(campaign_id, ad_group_id, criterion_id)
34
33
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
35
34
  # when called without parameters.
36
35
  adwords = AdwordsApi::Api.new
@@ -44,10 +43,6 @@ def add_experiment()
44
43
  ad_group_criterion_srv =
45
44
  adwords.service(:AdGroupCriterionService, API_VERSION)
46
45
 
47
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
48
- ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
49
- criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
50
-
51
46
  # Prepare for adding experiment.
52
47
  operation = {
53
48
  :operator => 'ADD',
@@ -55,7 +50,11 @@ def add_experiment()
55
50
  :campaign_id => campaign_id,
56
51
  :name => "Interplanetary Experiment #%d" % (Time.new.to_f * 1000).to_i,
57
52
  :query_percentage => 10,
58
- :start_date_time => Time.now.strftime('%Y%m%d %H%M%S')
53
+ :start_date_time => Time.now.strftime('%Y%m%d %H%M%S'),
54
+ # Optional fields:
55
+ :status => 'ACTIVE',
56
+ :end_date_time =>
57
+ DateTime.parse((Date.today + 30).to_s).strftime('%Y%m%d %H%M%S')
59
58
  }
60
59
  }
61
60
 
@@ -132,8 +131,14 @@ def add_experiment()
132
131
  end
133
132
 
134
133
  if __FILE__ == $0
134
+ API_VERSION = :v201109
135
+
135
136
  begin
136
- add_experiment()
137
+ # IDs of the required objects.
138
+ campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
139
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
140
+ criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
141
+ add_experiment(campaign_id, ad_group_id, criterion_id)
137
142
 
138
143
  # HTTP errors.
139
144
  rescue AdsCommon::Errors::HttpError => e
@@ -26,11 +26,6 @@
26
26
 
27
27
  require 'adwords_api'
28
28
 
29
- API_VERSION = :v201109
30
- RETRY_INTERVAL = 30
31
- RETRIES_COUNT = 30
32
- KEYWORD_NUMBER = 100
33
-
34
29
  def add_keywords_in_bulk()
35
30
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
36
31
  # when called without parameters.
@@ -129,6 +124,11 @@ def add_keywords_in_bulk()
129
124
  end
130
125
 
131
126
  if __FILE__ == $0
127
+ API_VERSION = :v201109
128
+ RETRY_INTERVAL = 30
129
+ RETRIES_COUNT = 30
130
+ KEYWORD_NUMBER = 100
131
+
132
132
  begin
133
133
  add_keywords_in_bulk()
134
134
 
@@ -25,9 +25,7 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def add_location_extension()
28
+ def add_location_extension(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
@@ -40,8 +38,6 @@ def add_location_extension()
40
38
  adwords.service(:CampaignAdExtensionService, API_VERSION)
41
39
  geo_location_srv = adwords.service(:GeoLocationService, API_VERSION)
42
40
 
43
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
44
-
45
41
  selector = {
46
42
  :addresses => [
47
43
  {
@@ -78,7 +74,13 @@ def add_location_extension()
78
74
  :address => location[:address],
79
75
  :geo_point => location[:geo_point],
80
76
  :encoded_location => location[:encoded_location],
81
- :source => 'ADWORDS_FRONTEND'}}}
77
+ :source => 'ADWORDS_FRONTEND',
78
+ # Optional fields:
79
+ #:company_name => 'ACME Inc.',
80
+ #:phone_number => '+1-650-253-0000'
81
+ }
82
+ }
83
+ }
82
84
  end
83
85
 
84
86
  # Add location ad extensions.
@@ -90,8 +92,12 @@ def add_location_extension()
90
92
  end
91
93
 
92
94
  if __FILE__ == $0
95
+ API_VERSION = :v201109
96
+
93
97
  begin
94
- add_location_extension()
98
+ # ID of campaign to add location extension to.
99
+ campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
100
+ add_location_extension(campaign_id)
95
101
 
96
102
  # HTTP errors.
97
103
  rescue AdsCommon::Errors::HttpError => e
@@ -26,9 +26,7 @@
26
26
 
27
27
  require 'adwords_api'
28
28
 
29
- API_VERSION = :v201109
30
-
31
- def add_location_extension_override()
29
+ def add_location_extension_override(ad_id, location_extension_id)
32
30
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
31
  # when called without parameters.
34
32
  adwords = AdwordsApi::Api.new
@@ -40,9 +38,6 @@ def add_location_extension_override()
40
38
  ad_ext_override_srv =
41
39
  adwords.service(:AdExtensionOverrideService, API_VERSION)
42
40
 
43
- ad_id = 'INSERT_AD_ID_HERE'.to_i
44
- location_extension_id = 'INSERT_LOCATION_EXTENSION_ID_HERE'.to_i
45
-
46
41
  # Create operation.
47
42
  operation = {
48
43
  :operator => 'ADD',
@@ -62,8 +57,13 @@ def add_location_extension_override()
62
57
  end
63
58
 
64
59
  if __FILE__ == $0
60
+ API_VERSION = :v201109
61
+
65
62
  begin
66
- add_location_extension_override()
63
+ # IDs of ad and location extension override to add.
64
+ ad_id = 'INSERT_AD_ID_HERE'.to_i
65
+ location_extension_id = 'INSERT_LOCATION_EXTENSION_ID_HERE'.to_i
66
+ add_location_extension_override(ad_id, location_extension_id)
67
67
 
68
68
  # HTTP errors.
69
69
  rescue AdsCommon::Errors::HttpError => e
@@ -25,9 +25,7 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def get_all_disapproved_ads()
28
+ def get_all_disapproved_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,8 +36,6 @@ def get_all_disapproved_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
  # Get all the disapproved ads for this campaign.
44
40
  selector = {
45
41
  :fields => ['Id', 'DisapprovalReasons'],
@@ -72,8 +68,12 @@ def get_all_disapproved_ads()
72
68
  end
73
69
 
74
70
  if __FILE__ == $0
71
+ API_VERSION = :v201109
72
+
75
73
  begin
76
- get_all_disapproved_ads()
74
+ # ID of an ad group to get disapproved ads for.
75
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
76
+ get_all_disapproved_ads(ad_group_id)
77
77
 
78
78
  # HTTP errors.
79
79
  rescue AdsCommon::Errors::HttpError => e
@@ -25,9 +25,7 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def promote_experiment()
28
+ def promote_experiment(experiment_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 promote_experiment()
38
36
 
39
37
  experiment_srv = adwords.service(:ExperimentService, API_VERSION)
40
38
 
41
- experiment_id = 'INSERT_EXPERIMENT_ID_HERE'.to_i
42
-
43
39
  # Prepare for updating experiment.
44
40
  operation = {
45
41
  :operator => 'SET',
@@ -57,8 +53,11 @@ def promote_experiment()
57
53
  end
58
54
 
59
55
  if __FILE__ == $0
56
+ API_VERSION = :v201109
57
+
60
58
  begin
61
- promote_experiment()
59
+ experiment_id = 'INSERT_EXPERIMENT_ID_HERE'.to_i
60
+ promote_experiment(experiment_id)
62
61
 
63
62
  # HTTP errors.
64
63
  rescue AdsCommon::Errors::HttpError => e
@@ -25,9 +25,7 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def set_ad_parameters()
28
+ def set_ad_parameters(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 set_ad_parameters()
39
37
  ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
40
38
  ad_param_srv = adwords.service(:AdParamService, 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 adding ad.
46
41
  ad_operation = {
47
42
  :operator => 'ADD',
@@ -64,7 +59,7 @@ def set_ad_parameters()
64
59
  # Add ad.
65
60
  response = ad_group_ad_srv.mutate([ad_operation])
66
61
  ad = response[:value].first[:ad]
67
- puts 'Text ad id %d was successfully added.' % ad[:id]
62
+ puts "Text ad ID %d was successfully added." % ad[:id]
68
63
 
69
64
  # Prepare for setting ad parameters.
70
65
  price_operation = {
@@ -93,8 +88,13 @@ def set_ad_parameters()
93
88
  end
94
89
 
95
90
  if __FILE__ == $0
91
+ API_VERSION = :v201109
92
+
96
93
  begin
97
- set_ad_parameters()
94
+ # IDs of ad group and criterion to set ad parameter for.
95
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
96
+ criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
97
+ set_ad_parameters(ad_group_id, criterion_id)
98
98
 
99
99
  # HTTP errors.
100
100
  rescue AdsCommon::Errors::HttpError => e
@@ -25,9 +25,7 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def validate_text_ad()
28
+ def validate_text_ad(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 validate_text_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
-
43
39
  # Enable 'validate only' option.
44
40
  adwords.validate_only = true
45
41
 
@@ -77,18 +73,20 @@ def validate_text_ad()
77
73
  response = ad_group_ad_srv.mutate([operation])
78
74
  if response and response[:value]
79
75
  ad = response[:value].first
80
- puts "Unexpected ad creation! Name '%s', ID %d and status '%s'." %
81
- [campaign[:name], campaign[:id], campaign[:status]]
76
+ raise StandardError, ("Unexpected ad creation! Name '%s', ID %d and " +
77
+ "status '%s'.") % [campaign[:name], campaign[:id], campaign[:status]]
82
78
  end
83
79
  rescue AdwordsApi::Errors::ApiException => e
84
80
  puts "Validation correctly failed with an exception: %s" % e.class
85
- raise e
86
81
  end
87
82
  end
88
83
 
89
84
  if __FILE__ == $0
85
+ API_VERSION = :v201109
86
+
90
87
  begin
91
- validate_text_ad()
88
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
89
+ validate_text_ad(ad_group_id)
92
90
 
93
91
  # HTTP errors.
94
92
  rescue AdsCommon::Errors::HttpError => e
@@ -25,10 +25,6 @@
25
25
 
26
26
  require 'adwords_api'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- MAX_RETRIES = 500
31
-
32
28
  def handle_captcha_challenge()
33
29
  # Initialize token variable.
34
30
  logintoken = nil
@@ -73,6 +69,9 @@ def handle_captcha_challenge()
73
69
  end
74
70
 
75
71
  if __FILE__ == $0
72
+ API_VERSION = :v201109
73
+ MAX_RETRIES = 500
74
+
76
75
  begin
77
76
  handle_captcha_challenge()
78
77
 
@@ -25,9 +25,7 @@
25
25
  require 'adwords_api'
26
26
  require 'adwords_api/utils'
27
27
 
28
- API_VERSION = :v201109
29
-
30
- def handle_partial_failures()
28
+ def handle_partial_failures(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
@@ -39,8 +37,6 @@ def handle_partial_failures()
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
-
44
40
  # Set partial failures flag.
45
41
  adwords.partial_failure = true
46
42
 
@@ -106,8 +102,11 @@ def handle_partial_failures()
106
102
  end
107
103
 
108
104
  if __FILE__ == $0
105
+ API_VERSION = :v201109
106
+
109
107
  begin
110
- handle_partial_failures()
108
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
109
+ handle_partial_failures(ad_group_id)
111
110
 
112
111
  # HTTP errors.
113
112
  rescue AdsCommon::Errors::HttpError => e
@@ -26,9 +26,7 @@
26
26
  require 'adwords_api'
27
27
  require 'adwords_api/utils'
28
28
 
29
- API_VERSION = :v201109
30
-
31
- def handle_policy_violation_error()
29
+ def handle_policy_violation_error(ad_group_id)
32
30
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
31
  # when called without parameters.
34
32
  adwords = AdwordsApi::Api.new
@@ -39,8 +37,6 @@ def handle_policy_violation_error()
39
37
 
40
38
  ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
41
39
 
42
- ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
43
-
44
40
  # Create text ad.
45
41
  text_ad_operation = {
46
42
  :operator => 'ADD',
@@ -117,8 +113,11 @@ def handle_policy_violation_error()
117
113
  end
118
114
 
119
115
  if __FILE__ == $0
116
+ API_VERSION = :v201109
117
+
120
118
  begin
121
- handle_policy_violation_error()
119
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
120
+ handle_policy_violation_error(ad_group_id)
122
121
 
123
122
  # HTTP errors.
124
123
  rescue AdsCommon::Errors::HttpError => e
@@ -22,8 +22,6 @@
22
22
 
23
23
  require 'adwords_api'
24
24
 
25
- API_VERSION = :v201109
26
-
27
25
  def handle_two_factor_authorization_error()
28
26
  # Set up credentials with an account that has 2Factor enabled.
29
27
  config = {
@@ -66,6 +64,8 @@ def handle_two_factor_authorization_error()
66
64
  end
67
65
 
68
66
  if __FILE__ == $0
67
+ API_VERSION = :v201109
68
+
69
69
  begin
70
70
  handle_two_factor_authorization_error()
71
71