google-adwords-api 0.12.1 → 0.13.0

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 (157) hide show
  1. checksums.yaml +8 -8
  2. data/ChangeLog +3 -0
  3. data/examples/v201402/basic_operations/delete_ad_group.rb +1 -22
  4. data/examples/{v201309/basic_operations/delete_ad_group.rb → v201402/basic_operations/delete_ad_group.rb~} +2 -8
  5. data/examples/v201402/basic_operations/delete_campaign.rb +2 -23
  6. data/examples/{v201309/basic_operations/update_campaign.rb → v201402/basic_operations/delete_campaign.rb~} +13 -12
  7. data/examples/v201406/basic_operations/remove_ad_group.rb +1 -22
  8. data/examples/{v201309/basic_operations/update_ad_group.rb → v201406/basic_operations/remove_ad_group.rb~} +14 -13
  9. data/examples/v201406/basic_operations/remove_campaign.rb +4 -24
  10. data/examples/{v201309/basic_operations/delete_campaign.rb → v201406/basic_operations/remove_campaign.rb~} +11 -11
  11. data/lib/adwords_api.rb +5 -8
  12. data/lib/adwords_api/api_config.rb +0 -76
  13. data/lib/adwords_api/report_utils.rb +9 -0
  14. data/lib/adwords_api/report_utils.rb~ +283 -0
  15. data/lib/adwords_api/version.rb +1 -1
  16. data/lib/adwords_api/version.rb~ +26 -0
  17. data/test/adwords_api/test_adwords_api.rb +5 -21
  18. data/test/adwords_api/test_adwords_api.rb~ +114 -0
  19. data/test/adwords_api/test_api_config.rb +8 -8
  20. data/test/adwords_api/test_report_utils.rb +29 -1
  21. data/test/adwords_api/test_report_utils.rb~ +216 -0
  22. data/test/templates/{v201309 → v201402}/basic_operations_get_campaigns.def +7 -7
  23. data/test/templates/{v201309 → v201402}/misc_use_oauth2_jwt.def +7 -7
  24. data/test/templates/v201406/basic_operations_get_campaigns.def +114 -0
  25. data/test/templates/v201406/misc_use_oauth2_jwt.def +131 -0
  26. metadata +14 -139
  27. data/examples/v201309/account_management/create_account.rb +0 -95
  28. data/examples/v201309/account_management/get_account_alerts.rb +0 -122
  29. data/examples/v201309/account_management/get_account_changes.rb +0 -145
  30. data/examples/v201309/account_management/get_account_hierarchy.rb +0 -103
  31. data/examples/v201309/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  32. data/examples/v201309/advanced_operations/add_click_to_download_ad.rb +0 -137
  33. data/examples/v201309/advanced_operations/add_site_links.rb +0 -306
  34. data/examples/v201309/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -147
  35. data/examples/v201309/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -181
  36. data/examples/v201309/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  37. data/examples/v201309/advanced_operations/update_site_links.rb +0 -194
  38. data/examples/v201309/advanced_operations/upload_offline_conversions.rb +0 -117
  39. data/examples/v201309/advanced_operations/use_shared_bidding_strategy.rb +0 -163
  40. data/examples/v201309/basic_operations/add_ad_groups.rb +0 -143
  41. data/examples/v201309/basic_operations/add_campaigns.rb +0 -162
  42. data/examples/v201309/basic_operations/add_keywords.rb +0 -116
  43. data/examples/v201309/basic_operations/add_text_ads.rb +0 -113
  44. data/examples/v201309/basic_operations/delete_ad.rb +0 -93
  45. data/examples/v201309/basic_operations/delete_keyword.rb +0 -98
  46. data/examples/v201309/basic_operations/get_ad_groups.rb +0 -106
  47. data/examples/v201309/basic_operations/get_campaigns.rb +0 -101
  48. data/examples/v201309/basic_operations/get_campaigns_with_awql.rb +0 -93
  49. data/examples/v201309/basic_operations/get_keywords.rb +0 -112
  50. data/examples/v201309/basic_operations/get_text_ads.rb +0 -114
  51. data/examples/v201309/basic_operations/pause_ad.rb +0 -92
  52. data/examples/v201309/basic_operations/update_keyword.rb +0 -110
  53. data/examples/v201309/campaign_management/add_experiment.rb +0 -166
  54. data/examples/v201309/campaign_management/add_keywords_in_bulk.rb +0 -158
  55. data/examples/v201309/campaign_management/add_location_extension.rb +0 -125
  56. data/examples/v201309/campaign_management/get_all_disapproved_ads.rb +0 -101
  57. data/examples/v201309/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -93
  58. data/examples/v201309/campaign_management/promote_experiment.rb +0 -85
  59. data/examples/v201309/campaign_management/set_ad_parameters.rb +0 -122
  60. data/examples/v201309/campaign_management/set_criterion_bid_modifier.rb +0 -108
  61. data/examples/v201309/campaign_management/validate_text_ad.rb +0 -114
  62. data/examples/v201309/error_handling/handle_captcha_challenge.rb +0 -93
  63. data/examples/v201309/error_handling/handle_partial_failures.rb +0 -134
  64. data/examples/v201309/error_handling/handle_policy_violation_error.rb +0 -145
  65. data/examples/v201309/error_handling/handle_two_factor_authorization_error.rb +0 -88
  66. data/examples/v201309/misc/get_all_images_and_videos.rb +0 -108
  67. data/examples/v201309/misc/setup_oauth2.rb +0 -88
  68. data/examples/v201309/misc/upload_image.rb +0 -97
  69. data/examples/v201309/misc/use_oauth2_jwt.rb +0 -97
  70. data/examples/v201309/optimization/estimate_keyword_traffic.rb +0 -137
  71. data/examples/v201309/optimization/get_keyword_bid_simulations.rb +0 -100
  72. data/examples/v201309/optimization/get_keyword_ideas.rb +0 -130
  73. data/examples/v201309/optimization/get_placement_ideas.rb +0 -112
  74. data/examples/v201309/remarketing/add_audience.rb +0 -123
  75. data/examples/v201309/remarketing/add_conversion_tracker.rb +0 -104
  76. data/examples/v201309/reporting/download_criteria_report.rb +0 -87
  77. data/examples/v201309/reporting/download_criteria_report_with_awql.rb +0 -86
  78. data/examples/v201309/reporting/get_report_fields.rb +0 -79
  79. data/examples/v201309/reporting/parallel_report_download.rb +0 -171
  80. data/examples/v201309/targeting/add_campaign_targeting_criteria.rb +0 -123
  81. data/examples/v201309/targeting/add_demographic_targeting_criteria.rb +0 -116
  82. data/examples/v201309/targeting/get_campaign_targeting_criteria.rb +0 -110
  83. data/examples/v201309/targeting/get_targetable_languages_and_carriers.rb +0 -94
  84. data/examples/v201309/targeting/lookup_location.rb +0 -112
  85. data/lib/adwords_api/v201309/ad_group_ad_service.rb +0 -42
  86. data/lib/adwords_api/v201309/ad_group_ad_service_registry.rb +0 -46
  87. data/lib/adwords_api/v201309/ad_group_bid_modifier_service.rb +0 -38
  88. data/lib/adwords_api/v201309/ad_group_bid_modifier_service_registry.rb +0 -46
  89. data/lib/adwords_api/v201309/ad_group_criterion_service.rb +0 -42
  90. data/lib/adwords_api/v201309/ad_group_criterion_service_registry.rb +0 -46
  91. data/lib/adwords_api/v201309/ad_group_feed_service.rb +0 -38
  92. data/lib/adwords_api/v201309/ad_group_feed_service_registry.rb +0 -46
  93. data/lib/adwords_api/v201309/ad_group_service.rb +0 -42
  94. data/lib/adwords_api/v201309/ad_group_service_registry.rb +0 -46
  95. data/lib/adwords_api/v201309/ad_param_service.rb +0 -38
  96. data/lib/adwords_api/v201309/ad_param_service_registry.rb +0 -46
  97. data/lib/adwords_api/v201309/adwords_user_list_service.rb +0 -38
  98. data/lib/adwords_api/v201309/adwords_user_list_service_registry.rb +0 -46
  99. data/lib/adwords_api/v201309/alert_service.rb +0 -34
  100. data/lib/adwords_api/v201309/alert_service_registry.rb +0 -46
  101. data/lib/adwords_api/v201309/bidding_strategy_service.rb +0 -38
  102. data/lib/adwords_api/v201309/bidding_strategy_service_registry.rb +0 -46
  103. data/lib/adwords_api/v201309/budget_order_service.rb +0 -42
  104. data/lib/adwords_api/v201309/budget_order_service_registry.rb +0 -46
  105. data/lib/adwords_api/v201309/budget_service.rb +0 -38
  106. data/lib/adwords_api/v201309/budget_service_registry.rb +0 -46
  107. data/lib/adwords_api/v201309/campaign_ad_extension_service.rb +0 -38
  108. data/lib/adwords_api/v201309/campaign_ad_extension_service_registry.rb +0 -46
  109. data/lib/adwords_api/v201309/campaign_criterion_service.rb +0 -42
  110. data/lib/adwords_api/v201309/campaign_criterion_service_registry.rb +0 -46
  111. data/lib/adwords_api/v201309/campaign_feed_service.rb +0 -38
  112. data/lib/adwords_api/v201309/campaign_feed_service_registry.rb +0 -46
  113. data/lib/adwords_api/v201309/campaign_service.rb +0 -42
  114. data/lib/adwords_api/v201309/campaign_service_registry.rb +0 -46
  115. data/lib/adwords_api/v201309/campaign_shared_set_service.rb +0 -38
  116. data/lib/adwords_api/v201309/campaign_shared_set_service_registry.rb +0 -47
  117. data/lib/adwords_api/v201309/constant_data_service.rb +0 -62
  118. data/lib/adwords_api/v201309/constant_data_service_registry.rb +0 -46
  119. data/lib/adwords_api/v201309/conversion_tracker_service.rb +0 -38
  120. data/lib/adwords_api/v201309/conversion_tracker_service_registry.rb +0 -46
  121. data/lib/adwords_api/v201309/customer_service.rb +0 -34
  122. data/lib/adwords_api/v201309/customer_service_registry.rb +0 -46
  123. data/lib/adwords_api/v201309/customer_sync_service.rb +0 -34
  124. data/lib/adwords_api/v201309/customer_sync_service_registry.rb +0 -47
  125. data/lib/adwords_api/v201309/data_service.rb +0 -38
  126. data/lib/adwords_api/v201309/data_service_registry.rb +0 -46
  127. data/lib/adwords_api/v201309/experiment_service.rb +0 -38
  128. data/lib/adwords_api/v201309/experiment_service_registry.rb +0 -46
  129. data/lib/adwords_api/v201309/feed_item_service.rb +0 -38
  130. data/lib/adwords_api/v201309/feed_item_service_registry.rb +0 -46
  131. data/lib/adwords_api/v201309/feed_mapping_service.rb +0 -38
  132. data/lib/adwords_api/v201309/feed_mapping_service_registry.rb +0 -46
  133. data/lib/adwords_api/v201309/feed_service.rb +0 -38
  134. data/lib/adwords_api/v201309/feed_service_registry.rb +0 -46
  135. data/lib/adwords_api/v201309/geo_location_service.rb +0 -34
  136. data/lib/adwords_api/v201309/geo_location_service_registry.rb +0 -46
  137. data/lib/adwords_api/v201309/location_criterion_service.rb +0 -34
  138. data/lib/adwords_api/v201309/location_criterion_service_registry.rb +0 -46
  139. data/lib/adwords_api/v201309/managed_customer_service.rb +0 -50
  140. data/lib/adwords_api/v201309/managed_customer_service_registry.rb +0 -46
  141. data/lib/adwords_api/v201309/media_service.rb +0 -38
  142. data/lib/adwords_api/v201309/media_service_registry.rb +0 -46
  143. data/lib/adwords_api/v201309/mutate_job_service.rb +0 -42
  144. data/lib/adwords_api/v201309/mutate_job_service_registry.rb +0 -46
  145. data/lib/adwords_api/v201309/offline_conversion_feed_service.rb +0 -34
  146. data/lib/adwords_api/v201309/offline_conversion_feed_service_registry.rb +0 -46
  147. data/lib/adwords_api/v201309/report_definition_service.rb +0 -34
  148. data/lib/adwords_api/v201309/report_definition_service_registry.rb +0 -46
  149. data/lib/adwords_api/v201309/shared_criterion_service.rb +0 -38
  150. data/lib/adwords_api/v201309/shared_criterion_service_registry.rb +0 -47
  151. data/lib/adwords_api/v201309/shared_set_service.rb +0 -38
  152. data/lib/adwords_api/v201309/shared_set_service_registry.rb +0 -47
  153. data/lib/adwords_api/v201309/targeting_idea_service.rb +0 -38
  154. data/lib/adwords_api/v201309/targeting_idea_service_registry.rb +0 -46
  155. data/lib/adwords_api/v201309/traffic_estimator_service.rb +0 -34
  156. data/lib/adwords_api/v201309/traffic_estimator_service_registry.rb +0 -46
  157. data/test/bugs/test_issue_00000031.rb +0 -75
@@ -1,117 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This code example imports offline conversion values for specific clicks to
22
- # your account. To get Google Click ID for a click, run
23
- # CLICK_PERFORMANCE_REPORT.
24
- #
25
- # Tags: ConversionTrackerService.mutate, OfflineConversionFeedService.mutate
26
-
27
- require 'adwords_api'
28
- require 'date'
29
-
30
- def upload_offline_conversions(conversion_name, google_click_id,
31
- conversion_time, conversion_value)
32
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
- # when called without parameters.
34
- adwords = AdwordsApi::Api.new
35
-
36
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
37
- # the configuration file or provide your own logger:
38
- # adwords.logger = Logger.new('adwords_xml.log')
39
-
40
- conversion_tracker_srv =
41
- adwords.service(:ConversionTrackerService, API_VERSION)
42
- conversion_feed_srv =
43
- adwords.service(:OfflineConversionFeedService, API_VERSION)
44
-
45
- # Create an upload conversion. Once created, this entry will be visible under
46
- # Tools and Analysis->Conversion and will have Source = Import.
47
- upload_conversion = {
48
- :xsi_type => 'UploadConversion',
49
- :category => 'PAGE_VIEW',
50
- :name => conversion_name,
51
- :viewthrough_lookback_window => 30,
52
- :ctc_lookback_window => 90
53
- }
54
- return_conversions = conversion_tracker_srv.mutate([
55
- {:operator => 'ADD', :operand => upload_conversion}])
56
- return_conversions[:value].each do |tracker|
57
- puts "Upload conversion tracker with name '%s' and ID %d was created." %
58
- [tracker[:name], tracker[:id]]
59
- end
60
-
61
- # Associate offline conversions with the upload conversion tracker we created.
62
- feed = {
63
- :conversion_name => conversion_name,
64
- :google_click_id => google_click_id,
65
- :conversion_time => conversion_time,
66
- :conversion_value => conversion_value
67
- }
68
- return_feeds = conversion_feed_srv.mutate([
69
- {:operator => 'ADD', :operand => feed}])
70
- return_feeds[:value].each do |return_feed|
71
- puts ("Uploaded offline conversion value %.2f for Google Click ID '%s', " +
72
- 'to %s') % [return_feed[:conversion_value],
73
- return_feed[:google_click_id],
74
- return_feed[:conversion_name]]
75
- end
76
- end
77
-
78
- if __FILE__ == $0
79
- API_VERSION = :v201309
80
-
81
- begin
82
- # Name of the upload conversion to be created.
83
- conversion_name = 'INSERT_CONVERSION_NAME_HERE'
84
- # Google Click ID of the click for which offline conversions are uploaded.
85
- google_click_id = 'INSERT_GOOGLE_CLICK_ID_HERE'
86
- # Conversion time in 'yyyymmdd hhmmss' format.
87
- conversion_time = Time.new.strftime("%Y%m%d %H%M%S")
88
- # Conversion value to be uploaded.
89
- conversion_value = 'INSERT_CONVERSION_VALUE_HERE'.to_f
90
-
91
- upload_offline_conversions(conversion_name, google_click_id,
92
- conversion_time, conversion_value)
93
-
94
- # Authorization error.
95
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
96
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
97
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
98
- "to retrieve and store OAuth2 tokens."
99
- puts "See this wiki page for more details:\n\n " +
100
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
101
-
102
- # HTTP errors.
103
- rescue AdsCommon::Errors::HttpError => e
104
- puts "HTTP Error: %s" % e
105
-
106
- # API errors.
107
- rescue AdwordsApi::Errors::ApiException => e
108
- puts "Message: %s" % e.message
109
- puts 'Errors:'
110
- e.errors.each_with_index do |error, index|
111
- puts "\tError [%d]:" % (index + 1)
112
- error.each do |field, value|
113
- puts "\t\t%s: %s" % [field, value]
114
- end
115
- end
116
- end
117
- end
@@ -1,163 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example adds a Shared Bidding Strategy and uses it to construct a
22
- # campaign.
23
- #
24
- # Tags: BiddingStrategyService.mutate, CampaignService.mutate
25
- # Tags: BudgetService.mutate
26
-
27
- require 'adwords_api'
28
- require 'date'
29
-
30
- def use_shared_bidding_strategy()
31
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
32
- # when called without parameters.
33
- adwords = AdwordsApi::Api.new
34
-
35
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
36
- # the configuration file or provide your own logger:
37
- # adwords.logger = Logger.new('adwords_xml.log')
38
-
39
- budget_srv = adwords.service(:BudgetService, API_VERSION)
40
- bidding_srv = adwords.service(:BiddingStrategyService, API_VERSION)
41
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
42
-
43
- # Create a budget, which can be shared by multiple campaigns.
44
- budget = {
45
- :name => 'Interplanetary budget #%d' % (Time.new.to_f * 1000).to_i,
46
- :amount => {:micro_amount => 50000000},
47
- :delivery_method => 'STANDARD',
48
- :period => 'DAILY',
49
- :is_explicitly_shared => true
50
- }
51
- return_budget = budget_srv.mutate([
52
- {:operator => 'ADD', :operand => budget}])
53
- budget_id = return_budget[:value].first[:budget_id]
54
-
55
- # Create a shared bidding strategy.
56
- shared_bidding_strategy = {
57
- :name => 'Maximize Clicks #%d' % (Time.new.to_f * 1000).to_i,
58
- :bidding_scheme => {
59
- :xsi_type => 'TargetSpendBiddingScheme',
60
- # Optionally set additional bidding scheme parameters.
61
- :bid_ceiling => {:micro_amount => 20000000},
62
- :spend_target => {:micro_amount => 40000000}
63
- }
64
- }
65
- return_strategy = bidding_srv.mutate([
66
- {:operator => 'ADD', :operand => shared_bidding_strategy}])
67
-
68
- bidding_strategy = return_strategy[:value].first
69
- puts ("Shared bidding strategy with name '%s' and ID %d of type '%s' was " +
70
- 'created') %
71
- [bidding_strategy[:name], bidding_strategy[:id], bidding_strategy[:type]]
72
-
73
- # Create campaigns.
74
- campaigns = [
75
- {
76
- :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
77
- :status => 'PAUSED',
78
- :bidding_strategy_configuration => {
79
- :bidding_strategy_id => bidding_strategy[:id]
80
- },
81
- # Budget (required) - note only the budget ID is required.
82
- :budget => {:budget_id => budget_id},
83
- # Set the campaign network options to Search, Content and Search Network.
84
- :network_setting => {
85
- :target_google_search => true,
86
- :target_search_network => true,
87
- :target_content_network => true
88
- },
89
- :settings => [
90
- {
91
- :xsi_type => 'KeywordMatchSetting',
92
- :opt_in => true
93
- }
94
- ]
95
- },
96
- {
97
- :name => "Interplanetary Cruise banner #%d" % (Time.new.to_f * 1000).to_i,
98
- :status => 'PAUSED',
99
- :bidding_strategy_configuration => {
100
- :bidding_strategy_id => bidding_strategy[:id]
101
- },
102
- :budget => {:budget_id => budget_id},
103
- :settings => [
104
- {
105
- :xsi_type => 'KeywordMatchSetting',
106
- :opt_in => true
107
- }
108
- ],
109
- :network_setting => {
110
- :target_google_search => false,
111
- :target_search_network => false,
112
- :target_content_network => true
113
- }
114
- }
115
- ]
116
-
117
- # Prepare for adding campaign.
118
- operations = campaigns.map do |campaign|
119
- {:operator => 'ADD', :operand => campaign}
120
- end
121
-
122
- # Add campaign.
123
- response = campaign_srv.mutate(operations)
124
- if response and response[:value]
125
- response[:value].each do |campaign|
126
- puts "Campaign with name '%s' and ID %d was added." %
127
- [campaign[:name], campaign[:id]]
128
- end
129
- else
130
- raise new StandardError, 'No campaigns were added.'
131
- end
132
- end
133
-
134
- if __FILE__ == $0
135
- API_VERSION = :v201309
136
-
137
- begin
138
- use_shared_bidding_strategy()
139
-
140
- # Authorization error.
141
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
142
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
143
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
144
- "to retrieve and store OAuth2 tokens."
145
- puts "See this wiki page for more details:\n\n " +
146
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
147
-
148
- # HTTP errors.
149
- rescue AdsCommon::Errors::HttpError => e
150
- puts "HTTP Error: %s" % e
151
-
152
- # API errors.
153
- rescue AdwordsApi::Errors::ApiException => e
154
- puts "Message: %s" % e.message
155
- puts 'Errors:'
156
- e.errors.each_with_index do |error, index|
157
- puts "\tError [%d]:" % (index + 1)
158
- error.each do |field, value|
159
- puts "\t\t%s: %s" % [field, value]
160
- end
161
- end
162
- end
163
- end
@@ -1,143 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example illustrates how to create ad groups. To get a list of existing
22
- # campaigns run get_campaigns.rb.
23
- #
24
- # Tags: AdGroupService.mutate
25
-
26
- require 'adwords_api'
27
-
28
- def add_ad_groups(campaign_id)
29
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
30
- # when called without parameters.
31
- adwords = AdwordsApi::Api.new
32
-
33
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
- # the configuration file or provide your own logger:
35
- # adwords.logger = Logger.new('adwords_xml.log')
36
-
37
- ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
38
-
39
- ad_groups = [
40
- {
41
- :name => "Earth to Mars Cruises #%d" % (Time.new.to_f * 1000).to_i,
42
- :status => 'ENABLED',
43
- :campaign_id => campaign_id,
44
- :bidding_strategy_configuration => {
45
- :bids => [
46
- {
47
- # The 'xsi_type' field allows you to specify the xsi:type of the
48
- # object being created. It's only necessary when you must provide
49
- # an explicit type that the client library can't infer.
50
- :xsi_type => 'CpcBid',
51
- :bid => {:micro_amount => 10000000},
52
- :content_bid => {:micro_amount => 2000000}
53
- }
54
- ]
55
- },
56
- :settings => [
57
- # Targetting restriction settings - these setting only affect serving
58
- # for the Display Network.
59
- {
60
- :xsi_type => 'TargetingSetting',
61
- :details => [
62
- # Restricting to serve ads that match your ad group placements.
63
- {
64
- :xsi_type => 'TargetingSettingDetail',
65
- :criterion_type_group => 'PLACEMENT',
66
- :target_all => true
67
- },
68
- # Using your ad group verticals only for bidding.
69
- {
70
- :xsi_type => 'TargetingSettingDetail',
71
- :criterion_type_group => 'VERTICAL',
72
- :target_all => false
73
- }
74
- ]
75
- }
76
- ]
77
- },
78
- {
79
- :name => 'Earth to Pluto Cruises #%d' % (Time.new.to_f * 1000).to_i,
80
- :status => 'ENABLED',
81
- :campaign_id => campaign_id,
82
- :bidding_strategy_configuration => {
83
- :bids => [
84
- {
85
- # The 'xsi_type' field allows you to specify the xsi:type of the
86
- # object being created. It's only necessary when you must provide
87
- # an explicit type that the client library can't infer.
88
- :xsi_type => 'CpcBid',
89
- :bid => {:micro_amount => 10000000}
90
- }
91
- ]
92
- }
93
- }
94
- ]
95
-
96
- # Prepare operations for adding ad groups.
97
- operations = ad_groups.map do |ad_group|
98
- {:operator => 'ADD', :operand => ad_group}
99
- end
100
-
101
- # Add ad groups.
102
- response = ad_group_srv.mutate(operations)
103
- if response and response[:value]
104
- response[:value].each do |ad_group|
105
- puts "Ad group ID %d was successfully added." % ad_group[:id]
106
- end
107
- else
108
- raise StandardError, 'No ad group was added'
109
- end
110
- end
111
-
112
- if __FILE__ == $0
113
- API_VERSION = :v201309
114
-
115
- begin
116
- # Campaign ID to add ad group to.
117
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
118
- add_ad_groups(campaign_id)
119
-
120
- # Authorization error.
121
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
122
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
123
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
124
- "to retrieve and store OAuth2 tokens."
125
- puts "See this wiki page for more details:\n\n " +
126
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
127
-
128
- # HTTP errors.
129
- rescue AdsCommon::Errors::HttpError => e
130
- puts "HTTP Error: %s" % e
131
-
132
- # API errors.
133
- rescue AdwordsApi::Errors::ApiException => e
134
- puts "Message: %s" % e.message
135
- puts 'Errors:'
136
- e.errors.each_with_index do |error, index|
137
- puts "\tError [%d]:" % (index + 1)
138
- error.each do |field, value|
139
- puts "\t\t%s: %s" % [field, value]
140
- end
141
- end
142
- end
143
- end
@@ -1,162 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example illustrates how to create campaigns.
22
- #
23
- # Tags: CampaignService.mutate, BudgetService.mutate
24
-
25
- require 'adwords_api'
26
- require 'date'
27
-
28
- def add_campaigns()
29
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
30
- # when called without parameters.
31
- adwords = AdwordsApi::Api.new
32
-
33
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
- # the configuration file or provide your own logger:
35
- # adwords.logger = Logger.new('adwords_xml.log')
36
-
37
- budget_srv = adwords.service(:BudgetService, API_VERSION)
38
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
39
-
40
- # Create a budget, which can be shared by multiple campaigns.
41
- budget = {
42
- :name => 'Interplanetary budget #%d' % (Time.new.to_f * 1000).to_i,
43
- :amount => {:micro_amount => 50000000},
44
- :delivery_method => 'STANDARD',
45
- :period => 'DAILY'
46
- }
47
- budget_operation = {:operator => 'ADD', :operand => budget}
48
-
49
- # Add budget.
50
- return_budget = budget_srv.mutate([budget_operation])
51
- budget_id = return_budget[:value].first[:budget_id]
52
-
53
- # Create campaigns.
54
- campaigns = [
55
- {
56
- :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
57
- :status => 'PAUSED',
58
- :bidding_strategy_configuration => {
59
- :bidding_strategy_type => 'MANUAL_CPC',
60
- # Optional: provide BiddingScheme.
61
- :bidding_scheme => {
62
- :xsi_type => 'ManualCpcBiddingScheme',
63
- :enhanced_cpc_enabled => false
64
- }
65
- },
66
- # Budget (required) - note only the budget ID is required.
67
- :budget => {:budget_id => budget_id},
68
- # Set the campaign network options to Search, Content and Search Network.
69
- :network_setting => {
70
- :target_google_search => true,
71
- :target_search_network => true,
72
- :target_content_network => true
73
- },
74
- # Optional fields:
75
- :start_date =>
76
- DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d'),
77
- :ad_serving_optimization_status => 'ROTATE',
78
- :settings => [
79
- {
80
- :xsi_type => 'GeoTargetTypeSetting',
81
- :positive_geo_target_type => 'DONT_CARE',
82
- :negative_geo_target_type => 'DONT_CARE'
83
- },
84
- {
85
- :xsi_type => 'KeywordMatchSetting',
86
- :opt_in => true
87
- }
88
- ],
89
- :frequency_cap => {
90
- :impressions => '5',
91
- :time_unit => 'DAY',
92
- :level => 'ADGROUP'
93
- }
94
- },
95
- {
96
- :name => "Interplanetary Cruise banner #%d" % (Time.new.to_f * 1000).to_i,
97
- :status => 'PAUSED',
98
- :bidding_strategy_configuration => {
99
- :bidding_strategy_type => 'MANUAL_CPC'
100
- },
101
- :budget => {:budget_id => budget_id},
102
- :settings => [
103
- {
104
- :xsi_type => 'KeywordMatchSetting',
105
- :opt_in => true
106
- }
107
- ],
108
- :network_setting => {
109
- :target_google_search => false,
110
- :target_search_network => false,
111
- :target_content_network => true
112
- }
113
- }
114
- ]
115
-
116
- # Prepare for adding campaign.
117
- operations = campaigns.map do |campaign|
118
- {:operator => 'ADD', :operand => campaign}
119
- end
120
-
121
- # Add campaign.
122
- response = campaign_srv.mutate(operations)
123
- if response and response[:value]
124
- response[:value].each do |campaign|
125
- puts "Campaign with name '%s' and ID %d was added." %
126
- [campaign[:name], campaign[:id]]
127
- end
128
- else
129
- raise new StandardError, 'No campaigns were added.'
130
- end
131
- end
132
-
133
- if __FILE__ == $0
134
- API_VERSION = :v201309
135
-
136
- begin
137
- add_campaigns()
138
-
139
- # Authorization error.
140
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
141
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
142
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
143
- "to retrieve and store OAuth2 tokens."
144
- puts "See this wiki page for more details:\n\n " +
145
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
146
-
147
- # HTTP errors.
148
- rescue AdsCommon::Errors::HttpError => e
149
- puts "HTTP Error: %s" % e
150
-
151
- # API errors.
152
- rescue AdwordsApi::Errors::ApiException => e
153
- puts "Message: %s" % e.message
154
- puts 'Errors:'
155
- e.errors.each_with_index do |error, index|
156
- puts "\tError [%d]:" % (index + 1)
157
- error.each do |field, value|
158
- puts "\t\t%s: %s" % [field, value]
159
- end
160
- end
161
- end
162
- end