google-adwords-api 0.14.1 → 0.14.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 (184) hide show
  1. checksums.yaml +8 -8
  2. data/ChangeLog +3 -0
  3. data/examples/v201406/optimization/estimate_keyword_traffic.rb +30 -12
  4. data/examples/v201409/basic_operations/add_keywords.rb +3 -1
  5. data/examples/v201409/{advanced_operations → extensions}/add_google_my_business_location_extensions.rb +1 -1
  6. data/examples/v201409/extensions/add_site_links.rb +167 -0
  7. data/examples/v201409/{advanced_operations/add_site_links.rb → extensions/add_site_links_using_feeds.rb} +0 -0
  8. data/examples/v201409/migration/migrate_to_extension_settings.rb +365 -0
  9. data/examples/v201409/optimization/estimate_keyword_traffic.rb +30 -13
  10. data/examples/v201502/account_management/create_account.rb +92 -0
  11. data/examples/v201502/account_management/get_account_changes.rb +143 -0
  12. data/examples/v201502/account_management/get_account_hierarchy.rb +98 -0
  13. data/examples/v201502/advanced_operations/add_ad_customizer.rb +277 -0
  14. data/examples/v201502/advanced_operations/add_ad_group_bid_modifier.rb +105 -0
  15. data/examples/v201502/advanced_operations/add_click_to_download_ad.rb +137 -0
  16. data/examples/v201502/advanced_operations/add_text_ad_with_upgraded_urls.rb +137 -0
  17. data/examples/v201502/advanced_operations/create_and_attach_shared_keyword_set.rb +137 -0
  18. data/examples/v201502/advanced_operations/find_and_remove_criteria_from_shared_set.rb +171 -0
  19. data/examples/v201502/advanced_operations/get_ad_group_bid_modifiers.rb +106 -0
  20. data/examples/v201502/advanced_operations/upload_offline_conversions.rb +117 -0
  21. data/examples/v201502/advanced_operations/use_shared_bidding_strategy.rb +152 -0
  22. data/examples/v201502/basic_operations/add_ad_groups.rb +144 -0
  23. data/examples/v201502/basic_operations/add_campaigns.rb +143 -0
  24. data/examples/v201502/basic_operations/add_keywords.rb +118 -0
  25. data/examples/v201502/basic_operations/add_text_ads.rb +113 -0
  26. data/examples/v201502/basic_operations/get_ad_groups.rb +106 -0
  27. data/examples/v201502/basic_operations/get_campaigns.rb +101 -0
  28. data/examples/v201502/basic_operations/get_campaigns_with_awql.rb +93 -0
  29. data/examples/v201502/basic_operations/get_keywords.rb +112 -0
  30. data/examples/v201502/basic_operations/get_text_ads.rb +114 -0
  31. data/examples/v201502/basic_operations/pause_ad.rb +92 -0
  32. data/examples/v201502/basic_operations/remove_ad.rb +93 -0
  33. data/examples/v201502/basic_operations/remove_ad_group.rb +89 -0
  34. data/examples/v201502/basic_operations/remove_campaign.rb +91 -0
  35. data/examples/v201502/basic_operations/remove_keyword.rb +98 -0
  36. data/examples/v201502/basic_operations/update_ad_group.rb +89 -0
  37. data/examples/v201502/basic_operations/update_campaign.rb +90 -0
  38. data/examples/v201502/basic_operations/update_keyword.rb +110 -0
  39. data/examples/v201502/campaign_management/add_campaign_labels.rb +86 -0
  40. data/examples/v201502/campaign_management/add_experiment.rb +166 -0
  41. data/examples/v201502/campaign_management/add_keywords_in_bulk.rb +158 -0
  42. data/examples/v201502/campaign_management/add_location_extension.rb +125 -0
  43. data/examples/v201502/campaign_management/get_all_disapproved_ads.rb +101 -0
  44. data/examples/v201502/campaign_management/get_all_disapproved_ads_with_awql.rb +93 -0
  45. data/examples/v201502/campaign_management/get_campaigns_by_label.rb +112 -0
  46. data/examples/v201502/campaign_management/promote_experiment.rb +85 -0
  47. data/examples/v201502/campaign_management/set_ad_parameters.rb +122 -0
  48. data/examples/v201502/campaign_management/set_criterion_bid_modifier.rb +108 -0
  49. data/examples/v201502/campaign_management/validate_text_ad.rb +114 -0
  50. data/examples/v201502/error_handling/handle_captcha_challenge.rb +93 -0
  51. data/examples/v201502/error_handling/handle_partial_failures.rb +134 -0
  52. data/examples/v201502/error_handling/handle_policy_violation_error.rb +145 -0
  53. data/examples/v201502/error_handling/handle_two_factor_authorization_error.rb +88 -0
  54. data/examples/v201502/extensions/add_google_my_business_location_extensions.rb +183 -0
  55. data/examples/v201502/extensions/add_site_links.rb +167 -0
  56. data/examples/v201502/extensions/add_site_links_using_feeds.rb +306 -0
  57. data/examples/v201502/migration/migrate_to_extension_settings.rb +365 -0
  58. data/examples/v201502/migration/upgrade_ad_url.rb +97 -0
  59. data/examples/v201502/misc/create_ad_words_session_without_properties_file.rb +94 -0
  60. data/examples/v201502/misc/get_all_images_and_videos.rb +108 -0
  61. data/examples/v201502/misc/setup_oauth2.rb +88 -0
  62. data/examples/v201502/misc/upload_image.rb +97 -0
  63. data/examples/v201502/misc/use_oauth2_jwt.rb +97 -0
  64. data/examples/v201502/optimization/estimate_keyword_traffic.rb +155 -0
  65. data/examples/v201502/optimization/get_keyword_bid_simulations.rb +99 -0
  66. data/examples/v201502/optimization/get_keyword_ideas.rb +130 -0
  67. data/examples/v201502/remarketing/add_audience.rb +122 -0
  68. data/examples/v201502/remarketing/add_conversion_tracker.rb +105 -0
  69. data/examples/v201502/remarketing/add_rule_based_user_lists.rb +171 -0
  70. data/examples/v201502/reporting/download_criteria_report.rb +87 -0
  71. data/examples/v201502/reporting/download_criteria_report_with_awql.rb +86 -0
  72. data/examples/v201502/reporting/get_report_fields.rb +79 -0
  73. data/examples/v201502/reporting/parallel_report_download.rb +168 -0
  74. data/examples/v201502/shopping_campaigns/add_product_partition_tree.rb +269 -0
  75. data/examples/v201502/shopping_campaigns/add_product_scope.rb +133 -0
  76. data/examples/v201502/shopping_campaigns/add_shopping_campaign.rb +133 -0
  77. data/examples/v201502/shopping_campaigns/get_product_category_taxonomy.rb +117 -0
  78. data/examples/v201502/targeting/add_campaign_targeting_criteria.rb +173 -0
  79. data/examples/v201502/targeting/add_demographic_targeting_criteria.rb +116 -0
  80. data/examples/v201502/targeting/get_campaign_targeting_criteria.rb +110 -0
  81. data/examples/v201502/targeting/get_targetable_languages_and_carriers.rb +94 -0
  82. data/examples/v201502/targeting/lookup_location.rb +112 -0
  83. data/lib/adwords_api/api_config.rb +98 -4
  84. data/lib/adwords_api/v201409/ad_customizer_feed_service.rb +38 -0
  85. data/lib/adwords_api/v201409/ad_customizer_feed_service_registry.rb +46 -0
  86. data/lib/adwords_api/v201409/ad_group_extension_setting_service.rb +42 -0
  87. data/lib/adwords_api/v201409/ad_group_extension_setting_service_registry.rb +46 -0
  88. data/lib/adwords_api/v201409/campaign_extension_setting_service.rb +42 -0
  89. data/lib/adwords_api/v201409/campaign_extension_setting_service_registry.rb +46 -0
  90. data/lib/adwords_api/v201409/customer_extension_setting_service.rb +42 -0
  91. data/lib/adwords_api/v201409/customer_extension_setting_service_registry.rb +46 -0
  92. data/lib/adwords_api/v201502/account_label_service.rb +38 -0
  93. data/lib/adwords_api/v201502/account_label_service_registry.rb +46 -0
  94. data/lib/adwords_api/v201502/ad_customizer_feed_service.rb +38 -0
  95. data/lib/adwords_api/v201502/ad_customizer_feed_service_registry.rb +46 -0
  96. data/lib/adwords_api/v201502/ad_group_ad_service.rb +50 -0
  97. data/lib/adwords_api/v201502/ad_group_ad_service_registry.rb +46 -0
  98. data/lib/adwords_api/v201502/ad_group_bid_modifier_service.rb +42 -0
  99. data/lib/adwords_api/v201502/ad_group_bid_modifier_service_registry.rb +46 -0
  100. data/lib/adwords_api/v201502/ad_group_criterion_service.rb +46 -0
  101. data/lib/adwords_api/v201502/ad_group_criterion_service_registry.rb +46 -0
  102. data/lib/adwords_api/v201502/ad_group_extension_setting_service.rb +42 -0
  103. data/lib/adwords_api/v201502/ad_group_extension_setting_service_registry.rb +46 -0
  104. data/lib/adwords_api/v201502/ad_group_feed_service.rb +42 -0
  105. data/lib/adwords_api/v201502/ad_group_feed_service_registry.rb +46 -0
  106. data/lib/adwords_api/v201502/ad_group_service.rb +46 -0
  107. data/lib/adwords_api/v201502/ad_group_service_registry.rb +46 -0
  108. data/lib/adwords_api/v201502/ad_param_service.rb +38 -0
  109. data/lib/adwords_api/v201502/ad_param_service_registry.rb +46 -0
  110. data/lib/adwords_api/v201502/adwords_user_list_service.rb +38 -0
  111. data/lib/adwords_api/v201502/adwords_user_list_service_registry.rb +46 -0
  112. data/lib/adwords_api/v201502/bidding_strategy_service.rb +42 -0
  113. data/lib/adwords_api/v201502/bidding_strategy_service_registry.rb +46 -0
  114. data/lib/adwords_api/v201502/budget_order_service.rb +42 -0
  115. data/lib/adwords_api/v201502/budget_order_service_registry.rb +46 -0
  116. data/lib/adwords_api/v201502/budget_service.rb +42 -0
  117. data/lib/adwords_api/v201502/budget_service_registry.rb +46 -0
  118. data/lib/adwords_api/v201502/campaign_criterion_service.rb +42 -0
  119. data/lib/adwords_api/v201502/campaign_criterion_service_registry.rb +46 -0
  120. data/lib/adwords_api/v201502/campaign_extension_setting_service.rb +42 -0
  121. data/lib/adwords_api/v201502/campaign_extension_setting_service_registry.rb +46 -0
  122. data/lib/adwords_api/v201502/campaign_feed_service.rb +42 -0
  123. data/lib/adwords_api/v201502/campaign_feed_service_registry.rb +46 -0
  124. data/lib/adwords_api/v201502/campaign_service.rb +46 -0
  125. data/lib/adwords_api/v201502/campaign_service_registry.rb +46 -0
  126. data/lib/adwords_api/v201502/campaign_shared_set_service.rb +38 -0
  127. data/lib/adwords_api/v201502/campaign_shared_set_service_registry.rb +46 -0
  128. data/lib/adwords_api/v201502/constant_data_service.rb +66 -0
  129. data/lib/adwords_api/v201502/constant_data_service_registry.rb +46 -0
  130. data/lib/adwords_api/v201502/conversion_tracker_service.rb +42 -0
  131. data/lib/adwords_api/v201502/conversion_tracker_service_registry.rb +46 -0
  132. data/lib/adwords_api/v201502/customer_extension_setting_service.rb +42 -0
  133. data/lib/adwords_api/v201502/customer_extension_setting_service_registry.rb +46 -0
  134. data/lib/adwords_api/v201502/customer_feed_service.rb +42 -0
  135. data/lib/adwords_api/v201502/customer_feed_service_registry.rb +46 -0
  136. data/lib/adwords_api/v201502/customer_service.rb +38 -0
  137. data/lib/adwords_api/v201502/customer_service_registry.rb +46 -0
  138. data/lib/adwords_api/v201502/customer_sync_service.rb +34 -0
  139. data/lib/adwords_api/v201502/customer_sync_service_registry.rb +47 -0
  140. data/lib/adwords_api/v201502/data_service.rb +54 -0
  141. data/lib/adwords_api/v201502/data_service_registry.rb +46 -0
  142. data/lib/adwords_api/v201502/experiment_service.rb +38 -0
  143. data/lib/adwords_api/v201502/experiment_service_registry.rb +46 -0
  144. data/lib/adwords_api/v201502/feed_item_service.rb +42 -0
  145. data/lib/adwords_api/v201502/feed_item_service_registry.rb +46 -0
  146. data/lib/adwords_api/v201502/feed_mapping_service.rb +42 -0
  147. data/lib/adwords_api/v201502/feed_mapping_service_registry.rb +46 -0
  148. data/lib/adwords_api/v201502/feed_service.rb +42 -0
  149. data/lib/adwords_api/v201502/feed_service_registry.rb +46 -0
  150. data/lib/adwords_api/v201502/geo_location_service.rb +34 -0
  151. data/lib/adwords_api/v201502/geo_location_service_registry.rb +46 -0
  152. data/lib/adwords_api/v201502/label_service.rb +42 -0
  153. data/lib/adwords_api/v201502/label_service_registry.rb +46 -0
  154. data/lib/adwords_api/v201502/location_criterion_service.rb +38 -0
  155. data/lib/adwords_api/v201502/location_criterion_service_registry.rb +46 -0
  156. data/lib/adwords_api/v201502/managed_customer_service.rb +54 -0
  157. data/lib/adwords_api/v201502/managed_customer_service_registry.rb +46 -0
  158. data/lib/adwords_api/v201502/media_service.rb +42 -0
  159. data/lib/adwords_api/v201502/media_service_registry.rb +46 -0
  160. data/lib/adwords_api/v201502/mutate_job_service.rb +42 -0
  161. data/lib/adwords_api/v201502/mutate_job_service_registry.rb +46 -0
  162. data/lib/adwords_api/v201502/offline_conversion_feed_service.rb +34 -0
  163. data/lib/adwords_api/v201502/offline_conversion_feed_service_registry.rb +46 -0
  164. data/lib/adwords_api/v201502/report_definition_service.rb +34 -0
  165. data/lib/adwords_api/v201502/report_definition_service_registry.rb +46 -0
  166. data/lib/adwords_api/v201502/shared_criterion_service.rb +38 -0
  167. data/lib/adwords_api/v201502/shared_criterion_service_registry.rb +46 -0
  168. data/lib/adwords_api/v201502/shared_set_service.rb +38 -0
  169. data/lib/adwords_api/v201502/shared_set_service_registry.rb +46 -0
  170. data/lib/adwords_api/v201502/targeting_idea_service.rb +34 -0
  171. data/lib/adwords_api/v201502/targeting_idea_service_registry.rb +46 -0
  172. data/lib/adwords_api/v201502/traffic_estimator_service.rb +34 -0
  173. data/lib/adwords_api/v201502/traffic_estimator_service_registry.rb +46 -0
  174. data/lib/adwords_api/version.rb +1 -1
  175. data/test/adwords_api/test_adwords_api.rb +1 -12
  176. data/test/templates/v201406/basic_operations_get_campaigns.def +1 -1
  177. data/test/templates/v201406/misc_use_oauth2_jwt.def +1 -1
  178. data/test/templates/v201409/basic_operations_get_campaigns.def +1 -1
  179. data/test/templates/v201409/misc_use_oauth2_jwt.def +1 -1
  180. data/test/templates/v201502/basic_operations_get_campaigns.def +114 -0
  181. data/test/templates/v201502/misc_use_oauth2_jwt.def +131 -0
  182. metadata +173 -8
  183. data/examples/v201406/advanced_operations/update_site_links.rb +0 -194
  184. data/examples/v201409/advanced_operations/update_site_links.rb +0 -194
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
+ #
6
+ # Copyright:: Copyright 2012, 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 demographic criteria to an ad group. To get ad groups list,
22
+ # run get_ad_groups.rb.
23
+ #
24
+ # Tags: AdGroupCriterionService.mutate
25
+
26
+ require 'adwords_api'
27
+
28
+ def add_demographic_targeting_criteria(ad_group_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_criterion_srv =
38
+ adwords.service(:AdGroupCriterionService, API_VERSION)
39
+
40
+ # Create ad group criteria.
41
+ ad_group_criteria = [
42
+ # Targeting criterion.
43
+ {
44
+ :xsi_type => 'BiddableAdGroupCriterion',
45
+ :ad_group_id => ad_group_id,
46
+ :criterion => {
47
+ :xsi_type => 'Gender',
48
+ # See system codes section for IDs:
49
+ # https://developers.google.com/adwords/api/docs/appendix/genders
50
+ :id => 11
51
+ }
52
+ },
53
+ # Exclusion criterion.
54
+ {
55
+ :xsi_type => 'NegativeAdGroupCriterion',
56
+ :ad_group_id => ad_group_id,
57
+ :criterion => {
58
+ :xsi_type => 'AgeRange',
59
+ # See system codes section for IDs:
60
+ # https://developers.google.com/adwords/api/docs/appendix/ages
61
+ :id => 503999
62
+ }
63
+ }
64
+ ]
65
+
66
+ # Create operations.
67
+ operations = ad_group_criteria.map do |criterion|
68
+ {:operator => 'ADD', :operand => criterion}
69
+ end
70
+
71
+ response = ad_group_criterion_srv.mutate(operations)
72
+
73
+ if response and response[:value]
74
+ criteria = response[:value]
75
+ criteria.each do |ad_group_criterion|
76
+ criterion = ad_group_criterion[:criterion]
77
+ puts ("Ad group criterion with ad group ID %d, criterion ID %d and " +
78
+ "type '%s' was added.") % [ad_group_criterion[:ad_group_id],
79
+ criterion[:id], criterion[:criterion_type]]
80
+ end
81
+ else
82
+ puts 'No criteria were returned.'
83
+ end
84
+ end
85
+
86
+ if __FILE__ == $0
87
+ API_VERSION = :v201502
88
+
89
+ begin
90
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'
91
+ add_demographic_targeting_criteria(ad_group_id)
92
+
93
+ # Authorization error.
94
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
95
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
96
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
97
+ "to retrieve and store OAuth2 tokens."
98
+ puts "See this wiki page for more details:\n\n " +
99
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
100
+
101
+ # HTTP errors.
102
+ rescue AdsCommon::Errors::HttpError => e
103
+ puts "HTTP Error: %s" % e
104
+
105
+ # API errors.
106
+ rescue AdwordsApi::Errors::ApiException => e
107
+ puts "Message: %s" % e.message
108
+ puts 'Errors:'
109
+ e.errors.each_with_index do |error, index|
110
+ puts "\tError [%d]:" % (index + 1)
111
+ error.each do |field, value|
112
+ puts "\t\t%s: %s" % [field, value]
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,110 @@
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 retrieve all the campaign targets. To set
22
+ # campaign targets, run add_campaign_targeting_criteria.rb.
23
+ #
24
+ # Tags: CampaignCriterionService.get
25
+
26
+ require 'adwords_api'
27
+
28
+ def get_campaign_targeting_criteria(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
+ campaign_criterion_srv =
38
+ adwords.service(:CampaignCriterionService, API_VERSION)
39
+
40
+ # Selector to get all the targeting for this campaign.
41
+ selector = {
42
+ :fields => ['Id', 'CriteriaType', 'KeywordText'],
43
+ :predicates => [
44
+ {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]}
45
+ ],
46
+ :paging => {
47
+ :start_index => 0,
48
+ :number_results => PAGE_SIZE
49
+ }
50
+ }
51
+
52
+ # Set initial values.
53
+ offset, page = 0, {}
54
+
55
+ begin
56
+ page = campaign_criterion_srv.get(selector)
57
+ if page[:entries]
58
+ page[:entries].each do |typed_criterion|
59
+ negative = typed_criterion[:xsi_type] == 'NegativeCampaignCriterion' ?
60
+ ' (negative)' : ''
61
+ criterion = typed_criterion[:criterion]
62
+ puts ("Campaign criterion%s with ID %d, type '%s' and text '%s'" +
63
+ " was found.") %
64
+ [negative, criterion[:id], criterion[:type], criterion[:text]]
65
+ end
66
+ # Increment values to request the next page.
67
+ offset += PAGE_SIZE
68
+ selector[:paging][:start_index] = offset
69
+ end
70
+ end while page[:total_num_entries] > offset
71
+
72
+ if page.include?(:total_num_entries)
73
+ puts "\tCampaign ID %d has %d criteria." %
74
+ [campaign_id, page[:total_num_entries]]
75
+ end
76
+ end
77
+
78
+ if __FILE__ == $0
79
+ API_VERSION = :v201502
80
+ PAGE_SIZE = 500
81
+
82
+ begin
83
+ # Specify campaign ID to get targeting for.
84
+ campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
85
+ get_campaign_targeting_criteria(campaign_id)
86
+
87
+ # Authorization error.
88
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
89
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
90
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
91
+ "to retrieve and store OAuth2 tokens."
92
+ puts "See this wiki page for more details:\n\n " +
93
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
94
+
95
+ # HTTP errors.
96
+ rescue AdsCommon::Errors::HttpError => e
97
+ puts "HTTP Error: %s" % e
98
+
99
+ # API errors.
100
+ rescue AdwordsApi::Errors::ApiException => e
101
+ puts "Message: %s" % e.message
102
+ puts 'Errors:'
103
+ e.errors.each_with_index do |error, index|
104
+ puts "\tError [%d]:" % (index + 1)
105
+ error.each do |field, value|
106
+ puts "\t\t%s: %s" % [field, value]
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,94 @@
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 retrieve all languages and carriers available
22
+ # for targeting.
23
+ #
24
+ # Tags: ConstantDataService.getLanguageCriterion
25
+ # Tags: ConstantDataService.getCarrierCriterion
26
+
27
+ require 'adwords_api'
28
+
29
+ def get_targetable_languages_and_carriers()
30
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
31
+ # when called without parameters.
32
+ adwords = AdwordsApi::Api.new
33
+
34
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
35
+ # the configuration file or provide your own logger:
36
+ # adwords.logger = Logger.new('adwords_xml.log')
37
+
38
+ constant_data_srv = adwords.service(:ConstantDataService, API_VERSION)
39
+
40
+ # Get all languages from ConstantDataService.
41
+ languages = constant_data_srv.get_language_criterion()
42
+
43
+ if languages
44
+ languages.each do |language|
45
+ puts "Language name is '%s', ID is %d and code is '%s'." %
46
+ [language[:name], language[:id], language[:code]]
47
+ end
48
+ else
49
+ puts 'No languages were found.'
50
+ end
51
+
52
+ # Get all carriers from ConstantDataService.
53
+ carriers = constant_data_srv.get_carrier_criterion()
54
+
55
+ if carriers
56
+ carriers.each do |carrier|
57
+ puts "Carrier name is '%s', ID is %d and country code is '%s'." %
58
+ [carrier[:name], carrier[:id], carrier[:country_code]]
59
+ end
60
+ else
61
+ puts 'No carriers were retrieved.'
62
+ end
63
+ end
64
+
65
+ if __FILE__ == $0
66
+ API_VERSION = :v201502
67
+
68
+ begin
69
+ get_targetable_languages_and_carriers()
70
+
71
+ # Authorization error.
72
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
73
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
74
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
75
+ "to retrieve and store OAuth2 tokens."
76
+ puts "See this wiki page for more details:\n\n " +
77
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
78
+
79
+ # HTTP errors.
80
+ rescue AdsCommon::Errors::HttpError => e
81
+ puts "HTTP Error: %s" % e
82
+
83
+ # API errors.
84
+ rescue AdwordsApi::Errors::ApiException => e
85
+ puts "Message: %s" % e.message
86
+ puts 'Errors:'
87
+ e.errors.each_with_index do |error, index|
88
+ puts "\tError [%d]:" % (index + 1)
89
+ error.each do |field, value|
90
+ puts "\t\t%s: %s" % [field, value]
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,112 @@
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 gets location criteria by name.
22
+ #
23
+ # Tags: LocationCriterionService.get
24
+
25
+ require 'adwords_api'
26
+
27
+ def lookup_location()
28
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
29
+ # when called without parameters.
30
+ adwords = AdwordsApi::Api.new
31
+
32
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
33
+ # the configuration file or provide your own logger:
34
+ # adwords.logger = Logger.new('adwords_xml.log')
35
+
36
+ location_criterion_srv =
37
+ adwords.service(:LocationCriterionService, API_VERSION)
38
+
39
+ # List of locations to look up.
40
+ location_names = ['Paris', 'Quebec', 'Spain', 'Deutschland']
41
+ # Locale to retrieve names in.
42
+ locale = 'en'
43
+
44
+ # Get the criteria by names.
45
+ selector = {
46
+ :fields => ['Id', 'LocationName', 'CanonicalName', 'DisplayType',
47
+ 'ParentLocations', 'Reach', 'TargetingStatus'],
48
+ :predicates => [
49
+ # Location names must match exactly, only EQUALS and IN are supported.
50
+ {:field => 'LocationName',
51
+ :operator => 'IN',
52
+ :values => location_names},
53
+ # Set the locale of the returned location names.
54
+ {:field => 'Locale', :operator => 'EQUALS', :values => [locale]}
55
+ ]
56
+ }
57
+ criteria = location_criterion_srv.get(selector)
58
+
59
+ if criteria
60
+ criteria.each do |criterion|
61
+ # Extract all parent location names as one comma-separated string.
62
+ parent_location = if criterion[:location][:parent_locations] and
63
+ !criterion[:location][:parent_locations].empty?
64
+ locations_array = criterion[:location][:parent_locations].map do |loc|
65
+ loc[:location_name]
66
+ end
67
+ locations_array.join(', ')
68
+ else
69
+ 'N/A'
70
+ end
71
+ puts ("The search term '%s' returned the location '%s' of type '%s' " +
72
+ "with ID %d, parent locations '%s' and reach %d (%s)") %
73
+ [criterion[:search_term], criterion[:location][:location_name],
74
+ criterion[:location][:criterion_type], criterion[:location][:id],
75
+ parent_location, criterion[:reach],
76
+ criterion[:location][:targeting_status]]
77
+ end
78
+ else
79
+ puts 'No criteria were returned.'
80
+ end
81
+ end
82
+
83
+ if __FILE__ == $0
84
+ API_VERSION = :v201502
85
+
86
+ begin
87
+ lookup_location()
88
+
89
+ # Authorization error.
90
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
91
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
92
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
93
+ "to retrieve and store OAuth2 tokens."
94
+ puts "See this wiki page for more details:\n\n " +
95
+ 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
96
+
97
+ # HTTP errors.
98
+ rescue AdsCommon::Errors::HttpError => e
99
+ puts "HTTP Error: %s" % e
100
+
101
+ # API errors.
102
+ rescue AdwordsApi::Errors::ApiException => e
103
+ puts "Message: %s" % e.message
104
+ puts 'Errors:'
105
+ e.errors.each_with_index do |error, index|
106
+ puts "\tError [%d]:" % (index + 1)
107
+ error.each do |field, value|
108
+ puts "\t\t%s: %s" % [field, value]
109
+ end
110
+ end
111
+ end
112
+ end
@@ -35,9 +35,9 @@ module AdwordsApi
35
35
  end
36
36
 
37
37
  # Set defaults
38
- DEFAULT_VERSION = :v201409
38
+ DEFAULT_VERSION = :v201502
39
39
  DEFAULT_ENVIRONMENT = :PRODUCTION
40
- LATEST_VERSION = :v201409
40
+ LATEST_VERSION = :v201502
41
41
 
42
42
  # Set other constants
43
43
  API_NAME = 'AdwordsApi'
@@ -86,9 +86,11 @@ module AdwordsApi
86
86
  :TrafficEstimatorService
87
87
  ],
88
88
  :v201409 => [
89
+ :AdCustomizerFeedService,
89
90
  :AdGroupAdService,
90
91
  :AdGroupBidModifierService,
91
92
  :AdGroupCriterionService,
93
+ :AdGroupExtensionSettingService,
92
94
  :AdGroupFeedService,
93
95
  :AdGroupService,
94
96
  :AdParamService,
@@ -98,11 +100,56 @@ module AdwordsApi
98
100
  :BudgetService,
99
101
  :CampaignAdExtensionService,
100
102
  :CampaignCriterionService,
103
+ :CampaignExtensionSettingService,
101
104
  :CampaignFeedService,
102
105
  :CampaignService,
103
106
  :CampaignSharedSetService,
104
107
  :ConstantDataService,
105
108
  :ConversionTrackerService,
109
+ :CustomerExtensionSettingService,
110
+ :CustomerFeedService,
111
+ :CustomerService,
112
+ :CustomerSyncService,
113
+ :DataService,
114
+ :ExperimentService,
115
+ :FeedItemService,
116
+ :FeedMappingService,
117
+ :FeedService,
118
+ :GeoLocationService,
119
+ :LabelService,
120
+ :LocationCriterionService,
121
+ :ManagedCustomerService,
122
+ :MediaService,
123
+ :MutateJobService,
124
+ :OfflineConversionFeedService,
125
+ :ReportDefinitionService,
126
+ :SharedCriterionService,
127
+ :SharedSetService,
128
+ :TargetingIdeaService,
129
+ :TrafficEstimatorService
130
+ ],
131
+ :v201502 => [
132
+ :AccountLabelService,
133
+ :AdCustomizerFeedService,
134
+ :AdGroupAdService,
135
+ :AdGroupBidModifierService,
136
+ :AdGroupCriterionService,
137
+ :AdGroupExtensionSettingService,
138
+ :AdGroupFeedService,
139
+ :AdGroupService,
140
+ :AdParamService,
141
+ :AdwordsUserListService,
142
+ :BiddingStrategyService,
143
+ :BudgetOrderService,
144
+ :BudgetService,
145
+ :CampaignCriterionService,
146
+ :CampaignExtensionSettingService,
147
+ :CampaignFeedService,
148
+ :CampaignService,
149
+ :CampaignSharedSetService,
150
+ :ConstantDataService,
151
+ :ConversionTrackerService,
152
+ :CustomerExtensionSettingService,
106
153
  :CustomerFeedService,
107
154
  :CustomerService,
108
155
  :CustomerSyncService,
@@ -132,7 +179,8 @@ module AdwordsApi
132
179
  :oauth_scope => 'https://www.googleapis.com/auth/adwords',
133
180
  :header_ns => 'https://adwords.google.com/api/adwords/cm/',
134
181
  :v201406 => 'https://adwords.google.com/api/adwords/',
135
- :v201409 => 'https://adwords.google.com/api/adwords/'
182
+ :v201409 => 'https://adwords.google.com/api/adwords/',
183
+ :v201502 => 'https://adwords.google.com/api/adwords/'
136
184
  }
137
185
  }
138
186
 
@@ -179,20 +227,24 @@ module AdwordsApi
179
227
  [:v201406, :AdwordsUserListService] => 'rm/',
180
228
  [:v201406, :LabelService] => 'cm/',
181
229
  # v201409
230
+ [:v201409, :AdCustomizerFeedService] => 'cm/',
182
231
  [:v201409, :AdGroupAdService] => 'cm/',
183
232
  [:v201409, :AdGroupBidModifierService] => 'cm/',
184
233
  [:v201409, :AdGroupCriterionService] => 'cm/',
234
+ [:v201409, :AdGroupExtensionSettingService] => 'cm/',
185
235
  [:v201409, :AdGroupFeedService] => 'cm/',
186
236
  [:v201409, :AdGroupService] => 'cm/',
187
237
  [:v201409, :AdParamService] => 'cm/',
188
238
  [:v201409, :BudgetOrderService] => 'billing/',
189
239
  [:v201409, :CampaignAdExtensionService] => 'cm/',
190
240
  [:v201409, :CampaignCriterionService] => 'cm/',
241
+ [:v201409, :CampaignExtensionSettingService] => 'cm/',
191
242
  [:v201409, :CampaignFeedService] => 'cm/',
192
243
  [:v201409, :CampaignService] => 'cm/',
193
244
  [:v201409, :CampaignSharedSetService] => 'cm/',
194
245
  [:v201409, :ConstantDataService] => 'cm/',
195
246
  [:v201409, :ConversionTrackerService] => 'cm/',
247
+ [:v201409, :CustomerExtensionSettingService] => 'cm/',
196
248
  [:v201409, :CustomerSyncService] => 'ch/',
197
249
  [:v201409, :DataService] => 'cm/',
198
250
  [:v201409, :ExperimentService] => 'cm/',
@@ -215,7 +267,49 @@ module AdwordsApi
215
267
  [:v201409, :BudgetService] => 'cm/',
216
268
  [:v201409, :BiddingStrategyService] => 'cm/',
217
269
  [:v201409, :AdwordsUserListService] => 'rm/',
218
- [:v201409, :LabelService] => 'cm/'
270
+ [:v201409, :LabelService] => 'cm/',
271
+ # v201502
272
+ [:v201502, :AccountLabelService] => 'mcm/',
273
+ [:v201502, :AdCustomizerFeedService] => 'cm/',
274
+ [:v201502, :AdGroupAdService] => 'cm/',
275
+ [:v201502, :AdGroupBidModifierService] => 'cm/',
276
+ [:v201502, :AdGroupCriterionService] => 'cm/',
277
+ [:v201502, :AdGroupExtensionSettingService] => 'cm/',
278
+ [:v201502, :AdGroupFeedService] => 'cm/',
279
+ [:v201502, :AdGroupService] => 'cm/',
280
+ [:v201502, :AdParamService] => 'cm/',
281
+ [:v201502, :BudgetOrderService] => 'billing/',
282
+ [:v201502, :CampaignCriterionService] => 'cm/',
283
+ [:v201502, :CampaignExtensionSettingService] => 'cm/',
284
+ [:v201502, :CampaignFeedService] => 'cm/',
285
+ [:v201502, :CampaignService] => 'cm/',
286
+ [:v201502, :CampaignSharedSetService] => 'cm/',
287
+ [:v201502, :ConstantDataService] => 'cm/',
288
+ [:v201502, :ConversionTrackerService] => 'cm/',
289
+ [:v201502, :CustomerExtensionSettingService] => 'cm/',
290
+ [:v201502, :CustomerSyncService] => 'ch/',
291
+ [:v201502, :DataService] => 'cm/',
292
+ [:v201502, :ExperimentService] => 'cm/',
293
+ [:v201502, :FeedItemService] => 'cm/',
294
+ [:v201502, :FeedMappingService] => 'cm/',
295
+ [:v201502, :FeedService] => 'cm/',
296
+ [:v201502, :GeoLocationService] => 'cm/',
297
+ [:v201502, :LocationCriterionService] => 'cm/',
298
+ [:v201502, :MediaService] => 'cm/',
299
+ [:v201502, :MutateJobService] => 'cm/',
300
+ [:v201502, :OfflineConversionFeedService] => 'cm/',
301
+ [:v201502, :ReportDefinitionService] => 'cm/',
302
+ [:v201502, :SharedCriterionService] => 'cm/',
303
+ [:v201502, :SharedSetService] => 'cm/',
304
+ [:v201502, :TargetingIdeaService] => 'o/',
305
+ [:v201502, :TrafficEstimatorService] => 'o/',
306
+ [:v201502, :ManagedCustomerService] => 'mcm/',
307
+ [:v201502, :CustomerService] => 'mcm/',
308
+ [:v201502, :CustomerFeedService] => 'cm/',
309
+ [:v201502, :BudgetService] => 'cm/',
310
+ [:v201502, :BiddingStrategyService] => 'cm/',
311
+ [:v201502, :AdwordsUserListService] => 'rm/',
312
+ [:v201502, :LabelService] => 'cm/'
219
313
  }
220
314
 
221
315
  public