google-adwords-api 0.21.1 → 0.22.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 (182) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +3 -0
  3. data/examples/{v201603/basic_operations/remove_campaign.rb → v201609/account_management/accept_service_link.rb} +24 -20
  4. data/examples/v201609/advanced_operations/add_universal_app_campaign.rb +3 -0
  5. data/examples/v201609/advanced_operations/use_portfolio_bidding_strategy.rb +3 -0
  6. data/examples/v201609/basic_operations/add_campaigns.rb +3 -0
  7. data/examples/v201609/campaign_management/add_complete_campaigns_using_batch_job.rb +3 -0
  8. data/examples/v201609/misc/use_oauth2_jwt.rb +1 -1
  9. data/examples/v201609/shopping_campaigns/add_shopping_campaign.rb +4 -0
  10. data/lib/adwords_api/api_config.rb +0 -92
  11. data/lib/adwords_api/version.rb +1 -1
  12. data/test/adwords_api/test_choices.rb +88 -25
  13. metadata +5 -174
  14. data/examples/v201603/account_management/create_account.rb +0 -88
  15. data/examples/v201603/account_management/get_account_changes.rb +0 -135
  16. data/examples/v201603/account_management/get_account_hierarchy.rb +0 -132
  17. data/examples/v201603/advanced_operations/add_ad_customizers.rb +0 -184
  18. data/examples/v201603/advanced_operations/add_ad_group_bid_modifier.rb +0 -101
  19. data/examples/v201603/advanced_operations/add_click_to_download_ad.rb +0 -133
  20. data/examples/v201603/advanced_operations/add_html5_ad.rb +0 -137
  21. data/examples/v201603/advanced_operations/add_text_ad_with_upgraded_urls.rb +0 -134
  22. data/examples/v201603/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -141
  23. data/examples/v201603/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -174
  24. data/examples/v201603/advanced_operations/get_ad_group_bid_modifiers.rb +0 -102
  25. data/examples/v201603/advanced_operations/use_portfolio_bidding_strategy.rb +0 -146
  26. data/examples/v201603/basic_operations/add_ad_groups.rb +0 -142
  27. data/examples/v201603/basic_operations/add_campaigns.rb +0 -138
  28. data/examples/v201603/basic_operations/add_keywords.rb +0 -114
  29. data/examples/v201603/basic_operations/add_text_ads.rb +0 -109
  30. data/examples/v201603/basic_operations/get_ad_groups.rb +0 -102
  31. data/examples/v201603/basic_operations/get_campaigns.rb +0 -97
  32. data/examples/v201603/basic_operations/get_campaigns_with_awql.rb +0 -89
  33. data/examples/v201603/basic_operations/get_keywords.rb +0 -109
  34. data/examples/v201603/basic_operations/get_text_ads.rb +0 -110
  35. data/examples/v201603/basic_operations/pause_ad.rb +0 -88
  36. data/examples/v201603/basic_operations/remove_ad.rb +0 -89
  37. data/examples/v201603/basic_operations/remove_ad_group.rb +0 -85
  38. data/examples/v201603/basic_operations/remove_keyword.rb +0 -94
  39. data/examples/v201603/basic_operations/update_ad_group.rb +0 -85
  40. data/examples/v201603/basic_operations/update_campaign.rb +0 -86
  41. data/examples/v201603/basic_operations/update_keyword.rb +0 -106
  42. data/examples/v201603/campaign_management/add_campaign_labels.rb +0 -82
  43. data/examples/v201603/campaign_management/add_complete_campaigns_using_batch_job.rb +0 -355
  44. data/examples/v201603/campaign_management/add_draft.rb +0 -114
  45. data/examples/v201603/campaign_management/add_experiment.rb +0 -162
  46. data/examples/v201603/campaign_management/add_keywords_using_incremental_batch_job.rb +0 -210
  47. data/examples/v201603/campaign_management/add_trial.rb +0 -142
  48. data/examples/v201603/campaign_management/get_all_disapproved_ads.rb +0 -97
  49. data/examples/v201603/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -89
  50. data/examples/v201603/campaign_management/get_campaigns_by_label.rb +0 -108
  51. data/examples/v201603/campaign_management/graduate_trial.rb +0 -106
  52. data/examples/v201603/campaign_management/promote_experiment.rb +0 -81
  53. data/examples/v201603/campaign_management/set_ad_parameters.rb +0 -118
  54. data/examples/v201603/campaign_management/set_criterion_bid_modifier.rb +0 -104
  55. data/examples/v201603/campaign_management/validate_text_ad.rb +0 -110
  56. data/examples/v201603/error_handling/handle_partial_failures.rb +0 -130
  57. data/examples/v201603/error_handling/handle_policy_violation_error.rb +0 -141
  58. data/examples/v201603/extensions/add_google_my_business_location_extensions.rb +0 -193
  59. data/examples/v201603/extensions/add_site_links.rb +0 -184
  60. data/examples/v201603/extensions/add_site_links_using_feeds.rb +0 -281
  61. data/examples/v201603/migration/migrate_to_extension_settings.rb +0 -386
  62. data/examples/v201603/migration/upgrade_ad_url.rb +0 -93
  63. data/examples/v201603/misc/get_all_images_and_videos.rb +0 -104
  64. data/examples/v201603/misc/setup_oauth2.rb +0 -84
  65. data/examples/v201603/misc/upload_image.rb +0 -93
  66. data/examples/v201603/misc/upload_media_bundle.rb +0 -90
  67. data/examples/v201603/misc/use_oauth2_jwt.rb +0 -93
  68. data/examples/v201603/misc/use_runtime_config.rb +0 -92
  69. data/examples/v201603/optimization/estimate_keyword_traffic.rb +0 -146
  70. data/examples/v201603/optimization/get_campaign_criterion_bid_modifier_simulations.rb +0 -128
  71. data/examples/v201603/optimization/get_keyword_bid_simulations.rb +0 -95
  72. data/examples/v201603/optimization/get_keyword_ideas.rb +0 -136
  73. data/examples/v201603/remarketing/add_audience.rb +0 -118
  74. data/examples/v201603/remarketing/add_conversion_tracker.rb +0 -97
  75. data/examples/v201603/remarketing/add_crm_based_user_list.rb +0 -116
  76. data/examples/v201603/remarketing/add_rule_based_user_lists.rb +0 -167
  77. data/examples/v201603/remarketing/upload_offline_conversions.rb +0 -98
  78. data/examples/v201603/reporting/download_criteria_report.rb +0 -92
  79. data/examples/v201603/reporting/download_criteria_report_with_awql.rb +0 -93
  80. data/examples/v201603/reporting/get_report_fields.rb +0 -75
  81. data/examples/v201603/reporting/parallel_report_download.rb +0 -164
  82. data/examples/v201603/reporting/stream_criteria_report_results.rb +0 -97
  83. data/examples/v201603/shopping_campaigns/add_product_partition_tree.rb +0 -267
  84. data/examples/v201603/shopping_campaigns/add_product_scope.rb +0 -130
  85. data/examples/v201603/shopping_campaigns/add_shopping_campaign.rb +0 -129
  86. data/examples/v201603/shopping_campaigns/get_product_category_taxonomy.rb +0 -115
  87. data/examples/v201603/targeting/add_campaign_targeting_criteria.rb +0 -180
  88. data/examples/v201603/targeting/add_demographic_targeting_criteria.rb +0 -112
  89. data/examples/v201603/targeting/get_campaign_targeting_criteria.rb +0 -106
  90. data/examples/v201603/targeting/get_targetable_languages_and_carriers.rb +0 -89
  91. data/examples/v201603/targeting/lookup_location.rb +0 -108
  92. data/lib/adwords_api/v201603/account_label_service.rb +0 -46
  93. data/lib/adwords_api/v201603/account_label_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201603/ad_customizer_feed_service.rb +0 -46
  95. data/lib/adwords_api/v201603/ad_customizer_feed_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201603/ad_group_ad_service.rb +0 -70
  97. data/lib/adwords_api/v201603/ad_group_ad_service_registry.rb +0 -46
  98. data/lib/adwords_api/v201603/ad_group_bid_modifier_service.rb +0 -54
  99. data/lib/adwords_api/v201603/ad_group_bid_modifier_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201603/ad_group_criterion_service.rb +0 -62
  101. data/lib/adwords_api/v201603/ad_group_criterion_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201603/ad_group_extension_setting_service.rb +0 -54
  103. data/lib/adwords_api/v201603/ad_group_extension_setting_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201603/ad_group_feed_service.rb +0 -54
  105. data/lib/adwords_api/v201603/ad_group_feed_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201603/ad_group_service.rb +0 -62
  107. data/lib/adwords_api/v201603/ad_group_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201603/ad_param_service.rb +0 -46
  109. data/lib/adwords_api/v201603/ad_param_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201603/adwords_user_list_service.rb +0 -62
  111. data/lib/adwords_api/v201603/adwords_user_list_service_registry.rb +0 -46
  112. data/lib/adwords_api/v201603/batch_job_service.rb +0 -54
  113. data/lib/adwords_api/v201603/batch_job_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201603/bidding_strategy_service.rb +0 -54
  115. data/lib/adwords_api/v201603/bidding_strategy_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201603/budget_order_service.rb +0 -54
  117. data/lib/adwords_api/v201603/budget_order_service_registry.rb +0 -46
  118. data/lib/adwords_api/v201603/budget_service.rb +0 -54
  119. data/lib/adwords_api/v201603/budget_service_registry.rb +0 -46
  120. data/lib/adwords_api/v201603/campaign_criterion_service.rb +0 -54
  121. data/lib/adwords_api/v201603/campaign_criterion_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201603/campaign_extension_setting_service.rb +0 -54
  123. data/lib/adwords_api/v201603/campaign_extension_setting_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201603/campaign_feed_service.rb +0 -54
  125. data/lib/adwords_api/v201603/campaign_feed_service_registry.rb +0 -46
  126. data/lib/adwords_api/v201603/campaign_service.rb +0 -62
  127. data/lib/adwords_api/v201603/campaign_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201603/campaign_shared_set_service.rb +0 -54
  129. data/lib/adwords_api/v201603/campaign_shared_set_service_registry.rb +0 -46
  130. data/lib/adwords_api/v201603/constant_data_service.rb +0 -110
  131. data/lib/adwords_api/v201603/constant_data_service_registry.rb +0 -46
  132. data/lib/adwords_api/v201603/conversion_tracker_service.rb +0 -54
  133. data/lib/adwords_api/v201603/conversion_tracker_service_registry.rb +0 -46
  134. data/lib/adwords_api/v201603/customer_extension_setting_service.rb +0 -54
  135. data/lib/adwords_api/v201603/customer_extension_setting_service_registry.rb +0 -46
  136. data/lib/adwords_api/v201603/customer_feed_service.rb +0 -54
  137. data/lib/adwords_api/v201603/customer_feed_service_registry.rb +0 -46
  138. data/lib/adwords_api/v201603/customer_service.rb +0 -54
  139. data/lib/adwords_api/v201603/customer_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201603/customer_sync_service.rb +0 -38
  141. data/lib/adwords_api/v201603/customer_sync_service_registry.rb +0 -47
  142. data/lib/adwords_api/v201603/data_service.rb +0 -94
  143. data/lib/adwords_api/v201603/data_service_registry.rb +0 -46
  144. data/lib/adwords_api/v201603/draft_async_error_service.rb +0 -46
  145. data/lib/adwords_api/v201603/draft_async_error_service_registry.rb +0 -46
  146. data/lib/adwords_api/v201603/draft_service.rb +0 -54
  147. data/lib/adwords_api/v201603/draft_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201603/experiment_service.rb +0 -46
  149. data/lib/adwords_api/v201603/experiment_service_registry.rb +0 -46
  150. data/lib/adwords_api/v201603/feed_item_service.rb +0 -54
  151. data/lib/adwords_api/v201603/feed_item_service_registry.rb +0 -46
  152. data/lib/adwords_api/v201603/feed_mapping_service.rb +0 -54
  153. data/lib/adwords_api/v201603/feed_mapping_service_registry.rb +0 -46
  154. data/lib/adwords_api/v201603/feed_service.rb +0 -54
  155. data/lib/adwords_api/v201603/feed_service_registry.rb +0 -46
  156. data/lib/adwords_api/v201603/label_service.rb +0 -54
  157. data/lib/adwords_api/v201603/label_service_registry.rb +0 -46
  158. data/lib/adwords_api/v201603/location_criterion_service.rb +0 -46
  159. data/lib/adwords_api/v201603/location_criterion_service_registry.rb +0 -46
  160. data/lib/adwords_api/v201603/managed_customer_service.rb +0 -78
  161. data/lib/adwords_api/v201603/managed_customer_service_registry.rb +0 -46
  162. data/lib/adwords_api/v201603/media_service.rb +0 -54
  163. data/lib/adwords_api/v201603/media_service_registry.rb +0 -46
  164. data/lib/adwords_api/v201603/offline_conversion_feed_service.rb +0 -38
  165. data/lib/adwords_api/v201603/offline_conversion_feed_service_registry.rb +0 -46
  166. data/lib/adwords_api/v201603/report_definition_service.rb +0 -38
  167. data/lib/adwords_api/v201603/report_definition_service_registry.rb +0 -46
  168. data/lib/adwords_api/v201603/shared_criterion_service.rb +0 -54
  169. data/lib/adwords_api/v201603/shared_criterion_service_registry.rb +0 -46
  170. data/lib/adwords_api/v201603/shared_set_service.rb +0 -54
  171. data/lib/adwords_api/v201603/shared_set_service_registry.rb +0 -46
  172. data/lib/adwords_api/v201603/targeting_idea_service.rb +0 -38
  173. data/lib/adwords_api/v201603/targeting_idea_service_registry.rb +0 -46
  174. data/lib/adwords_api/v201603/traffic_estimator_service.rb +0 -38
  175. data/lib/adwords_api/v201603/traffic_estimator_service_registry.rb +0 -46
  176. data/lib/adwords_api/v201603/trial_async_error_service.rb +0 -46
  177. data/lib/adwords_api/v201603/trial_async_error_service_registry.rb +0 -46
  178. data/lib/adwords_api/v201603/trial_service.rb +0 -54
  179. data/lib/adwords_api/v201603/trial_service_registry.rb +0 -46
  180. data/test/templates/v201603/basic_operations_get_campaigns.def +0 -116
  181. data/test/templates/v201603/basic_operations_update_keyword.def +0 -125
  182. data/test/templates/v201603/misc_use_oauth2_jwt.def +0 -131
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example illustrates how to use OAuth2 authentication method with
20
- # Service Account (JWT). For this example to work, your Service Account must be
21
- # a Google Apps for Business Account.
22
- #
23
- # See https://developers.google.com/adwords/api/docs/guides/service-accounts
24
- # for more information.
25
-
26
- require 'adwords_api'
27
-
28
- def use_oauth2_jwt()
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
- # Option 1: provide key filename as authentication -> oauth2_keyfile in the
38
- # configuration file. No additional code is necessary.
39
- # To provide a file name at runtime, use authorize:
40
- # adwords.authorize({:oauth2_keyfile => key_filename})
41
-
42
- # Option 2: retrieve key manually and create OpenSSL::PKCS12 object.
43
- # key_filename = 'INSERT_FILENAME_HERE'
44
- # key_secret = 'INSERT_SECRET_HERE'
45
- # key_file_data = File.read(key_filename)
46
- # key = OpenSSL::PKCS12.new(key_file_data, key_secret).key
47
- # adwords.authorize({:oauth2_key => key})
48
-
49
- # Now you can make API calls.
50
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
51
-
52
- # Get all the campaigns for this account; empty selector.
53
- selector = {
54
- :fields => ['Id', 'Name', 'Status'],
55
- :ordering => [
56
- {:field => 'Name', :sort_order => 'ASCENDING'}
57
- ]
58
- }
59
-
60
- response = campaign_srv.get(selector)
61
- if response and response[:entries]
62
- campaigns = response[:entries]
63
- campaigns.each do |campaign|
64
- puts "Campaign ID %d, name '%s' and status '%s'" %
65
- [campaign[:id], campaign[:name], campaign[:status]]
66
- end
67
- else
68
- puts 'No campaigns were found.'
69
- end
70
- end
71
-
72
- if __FILE__ == $0
73
- API_VERSION = :v201603
74
-
75
- begin
76
- use_oauth2_jwt()
77
-
78
- # HTTP errors.
79
- rescue AdsCommon::Errors::HttpError => e
80
- puts "HTTP Error: %s" % e
81
-
82
- # API errors.
83
- rescue AdwordsApi::Errors::ApiException => e
84
- puts "Message: %s" % e.message
85
- puts 'Errors:'
86
- e.errors.each_with_index do |error, index|
87
- puts "\tError [%d]:" % (index + 1)
88
- error.each do |field, value|
89
- puts "\t\t%s: %s" % [field, value]
90
- end
91
- end
92
- end
93
- end
@@ -1,92 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2014, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example demonstrates how to make AdWords queries without using the
20
- # adwords_api.yml file.
21
-
22
- require 'adwords_api'
23
- require 'date'
24
-
25
- def use_runtime_config(client_id, client_secret, refresh_token,
26
- developer_token, client_customer_id, user_agent)
27
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
28
- # when called without parameters.
29
- adwords = AdwordsApi::Api.new({
30
- :authentication => {
31
- :method => 'OAuth2',
32
- :oauth2_client_id => client_id,
33
- :oauth2_client_secret => client_secret,
34
- :developer_token => developer_token,
35
- :client_customer_id => client_customer_id,
36
- :user_agent => user_agent,
37
- :oauth2_token => {
38
- :refresh_token => refresh_token
39
- }
40
- },
41
- :service => {
42
- :environment => 'PRODUCTION'
43
- }
44
- })
45
-
46
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
47
- # the hash above or provide your own logger:
48
- # adwords.logger = Logger.new('adwords_xml.log')
49
-
50
- customer_srv = adwords.service(:CustomerService, API_VERSION)
51
- customer = customer_srv.get()
52
- puts "You are logged in as customer: %d" % customer[:id]
53
- end
54
-
55
- if __FILE__ == $0
56
- API_VERSION = :v201603
57
-
58
- begin
59
- client_id = 'INSERT_CLIENT_ID_HERE'
60
- client_secret = 'INSERT_CLIENT_SECRET_HERE'
61
- refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
62
- developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
63
- client_customer_id = 'INSERT_CLIENT_CUSTOMER_ID_HERE'
64
- user_agent = 'INSERT_USER_AGENT_HERE'
65
-
66
- use_runtime_config(client_id, client_secret, refresh_token,
67
- developer_token, client_customer_id, user_agent)
68
-
69
- # Authorization error.
70
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
71
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
72
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
73
- "to retrieve and store OAuth2 tokens."
74
- puts "See this wiki page for more details:\n\n " +
75
- 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
76
-
77
- # HTTP errors.
78
- rescue AdsCommon::Errors::HttpError => e
79
- puts "HTTP Error: %s" % e
80
-
81
- # API errors.
82
- rescue AdwordsApi::Errors::ApiException => e
83
- puts "Message: %s" % e.message
84
- puts 'Errors:'
85
- e.errors.each_with_index do |error, index|
86
- puts "\tError [%d]:" % (index + 1)
87
- error.each do |field, value|
88
- puts "\t\t%s: %s" % [field, value]
89
- end
90
- end
91
- end
92
- end
@@ -1,146 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example gets keyword traffic estimates.
20
-
21
- require 'adwords_api'
22
-
23
- def estimate_keyword_traffic()
24
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
25
- # when called without parameters.
26
- adwords = AdwordsApi::Api.new
27
-
28
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
29
- # the configuration file or provide your own logger:
30
- # adwords.logger = Logger.new('adwords_xml.log')
31
-
32
- traffic_estimator_srv = adwords.service(:TrafficEstimatorService, API_VERSION)
33
-
34
- # Create keywords. Up to 2000 keywords can be passed in a single request.
35
- keywords = [
36
- # The 'xsi_type' field allows you to specify the xsi:type of the object
37
- # being created. It's only necessary when you must provide an explicit
38
- # type that the client library can't infer.
39
- {:xsi_type => 'Keyword', :text => 'mars cruise', :match_type => 'BROAD'},
40
- {:xsi_type => 'Keyword', :text => 'cheap cruise', :match_type => 'PHRASE'},
41
- {:xsi_type => 'Keyword', :text => 'cruise', :match_type => 'EXACT'},
42
- {:xsi_type => 'Keyword', :text => 'moon walk', :match_type => 'BROAD'}
43
- ]
44
-
45
- # Create a keyword estimate request for each keyword.
46
- keyword_requests = keywords.map {|keyword| {:keyword => keyword}}
47
-
48
- # Negative keywords don't return estimates, but adjust the estimates of the
49
- # other keywords in the hypothetical ad group. To specify a negative keyword
50
- # set the is_negative field to true.
51
- keyword_requests[3][:is_negative] = true
52
-
53
- # Create ad group estimate requests.
54
- ad_group_request = {
55
- :keyword_estimate_requests => keyword_requests,
56
- :max_cpc => {
57
- :micro_amount => 1000000
58
- }
59
- }
60
-
61
- # Create campaign estimate requests.
62
- campaign_request = {
63
- :ad_group_estimate_requests => [ad_group_request],
64
- # Set targeting criteria. Only locations and languages are supported.
65
- :criteria => [
66
- {:xsi_type => 'Location', :id => 2840}, # United States
67
- {:xsi_type => 'Language', :id => 1000} # English
68
- ]
69
- }
70
-
71
- # Create selector and retrieve reults.
72
- selector = {:campaign_estimate_requests => [campaign_request]}
73
- response = traffic_estimator_srv.get(selector)
74
-
75
- if response and response[:campaign_estimates]
76
- campaign_estimates = response[:campaign_estimates]
77
- keyword_estimates =
78
- campaign_estimates.first[:ad_group_estimates].first[:keyword_estimates]
79
- keyword_estimates.each_with_index do |estimate, index|
80
- keyword = keyword_requests[index][:keyword]
81
-
82
- # Find the mean of the min and max values.
83
- mean_avg_position = calculate_mean(
84
- estimate[:min][:average_position],
85
- estimate[:max][:average_position]
86
- )
87
- mean_clicks = calculate_mean(
88
- estimate[:min][:clicks_per_day],
89
- estimate[:max][:clicks_per_day]
90
- )
91
- mean_total_cost = calculate_mean(
92
- estimate[:min][:total_cost][:micro_amount],
93
- estimate[:max][:total_cost][:micro_amount]
94
- )
95
-
96
- puts "Results for the keyword with text '%s' and match type %s:" %
97
- [keyword[:text], keyword[:match_type]]
98
- puts "\tEstimated ad position: %s" % format_mean(mean_avg_position)
99
- puts "\tEstimated daily clicks: %s" % format_mean(mean_clicks)
100
- puts "\tEstimated daily cost: %s" % format_mean(mean_total_cost)
101
- end
102
- else
103
- puts 'No traffic estimates were returned.'
104
- end
105
- end
106
-
107
- def format_mean(mean)
108
- return "nil" if mean.nil?
109
- return "%.2f" % mean
110
- end
111
-
112
- def calculate_mean(min_money, max_money)
113
- return nil if min_money.nil? || max_money.nil?
114
- return (min_money.to_f + max_money.to_f) / 2.0
115
- end
116
-
117
- if __FILE__ == $0
118
- API_VERSION = :v201603
119
-
120
- begin
121
- estimate_keyword_traffic()
122
-
123
- # Authorization error.
124
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
125
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
126
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
127
- "to retrieve and store OAuth2 tokens."
128
- puts "See this wiki page for more details:\n\n " +
129
- 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
130
-
131
- # HTTP errors.
132
- rescue AdsCommon::Errors::HttpError => e
133
- puts "HTTP Error: %s" % e
134
-
135
- # API errors.
136
- rescue AdwordsApi::Errors::ApiException => e
137
- puts "Message: %s" % e.message
138
- puts 'Errors:'
139
- e.errors.each_with_index do |error, index|
140
- puts "\tError [%d]:" % (index + 1)
141
- error.each do |field, value|
142
- puts "\t\t%s: %s" % [field, value]
143
- end
144
- end
145
- end
146
- end
@@ -1,128 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2016, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example gets all available campaign criterion bid modifier landscapes
20
- # for a given campaign.
21
- # To get campaigns, run basic_operations/get_campaigns.rb.
22
-
23
- require 'adwords_api'
24
-
25
- def get_campaign_criterion_bid_modifier_simulations(campaign_id)
26
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
27
- # when called without parameters.
28
- adwords = AdwordsApi::Api.new
29
-
30
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
31
- # the configuration file or provide your own logger:
32
- # adwords.logger = Logger.new('adwords_xml.log')
33
-
34
- data_srv = adwords.service(:DataService, API_VERSION)
35
-
36
- # Get all the campaigns for this account.
37
- selector = {
38
- :fields => [
39
- 'CampaignId',
40
- 'CriterionId',
41
- 'StartDate',
42
- 'EndDate',
43
- 'BidModifier',
44
- 'LocalClicks',
45
- 'LocalCost',
46
- 'LocalImpressions',
47
- 'TotalLocalImpressions',
48
- 'TotalLocalClicks',
49
- 'TotalLocalCost',
50
- 'RequiredBudget'
51
- ],
52
- :paging => {
53
- :start_index => 0,
54
- :number_results => PAGE_SIZE
55
- }
56
- }
57
-
58
- # Set initial values.
59
- offset, page = 0, {}
60
-
61
- begin
62
- page = data_srv.get_campaign_criterion_bid_landscape(selector)
63
- if page[:entries]
64
- page[:entries].each do |bid_modifier_landscape|
65
- puts ("Found campaign-level criterion bid modifier landscapes for " +
66
- "criterion with id '%d', start date '%s', end date '%s', and " +
67
- "landscape points:") % [
68
- bid_modifier_landscape[:criterion_id],
69
- bid_modifier_landscape[:start_date],
70
- bid_modifier_landscape[:end_date]
71
- ]
72
- bid_modifier_landscape[:landscape_points].each do |landscape_point|
73
- puts (" bid modifier: %f => clicks: %d, cost: %d, impressions: %d" +
74
- " total clicks: %d, total cost: %d, total impressions: %d" +
75
- " and required budget: %f") % [
76
- landscape_point[:bid_modifier],
77
- landscape_point[:clicks],
78
- landscape_point[:cost][:micro_amount],
79
- landscape_point[:impressions],
80
- landscape_point[:total_local_clicks],
81
- landscape_point[:total_local_cost][:micro_amount],
82
- landscape_point[:total_local_impressions],
83
- landscape_point[:required_budget][:micro_amount]
84
- ]
85
- end
86
- puts
87
- end
88
-
89
- # Increment values to request the next page.
90
- offset += PAGE_SIZE
91
- selector[:paging][:start_index] = offset
92
- end
93
- end while page[:total_num_entries] > offset
94
- end
95
-
96
- if __FILE__ == $0
97
- API_VERSION = :v201603
98
- PAGE_SIZE = 500
99
-
100
- begin
101
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
102
-
103
- get_campaign_criterion_bid_modifier_simulations(campaign_id)
104
-
105
- # Authorization error.
106
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
107
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
108
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
109
- "to retrieve and store OAuth2 tokens."
110
- puts "See this wiki page for more details:\n\n " +
111
- 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
112
-
113
- # HTTP errors.
114
- rescue AdsCommon::Errors::HttpError => e
115
- puts "HTTP Error: %s" % e
116
-
117
- # API errors.
118
- rescue AdwordsApi::Errors::ApiException => e
119
- puts "Message: %s" % e.message
120
- puts 'Errors:'
121
- e.errors.each_with_index do |error, index|
122
- puts "\tError [%d]:" % (index + 1)
123
- error.each do |field, value|
124
- puts "\t\t%s: %s" % [field, value]
125
- end
126
- end
127
- end
128
- end