google-adwords-api 0.18.0 → 0.18.1

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +8 -0
  3. data/examples/v201509/basic_operations/add_ad_groups.rb +4 -2
  4. data/examples/v201509/remarketing/add_crm_based_user_list.rb +2 -4
  5. data/examples/v201509/{advanced_operations → remarketing}/upload_offline_conversions.rb +6 -21
  6. data/examples/v201601/account_management/create_account.rb +88 -0
  7. data/examples/v201601/account_management/get_account_changes.rb +139 -0
  8. data/examples/v201601/account_management/get_account_hierarchy.rb +132 -0
  9. data/examples/v201601/advanced_operations/add_ad_customizers.rb +184 -0
  10. data/examples/v201601/advanced_operations/add_ad_group_bid_modifier.rb +101 -0
  11. data/examples/v201601/advanced_operations/add_click_to_download_ad.rb +133 -0
  12. data/examples/v201601/advanced_operations/add_html5_ad.rb +137 -0
  13. data/examples/v201601/advanced_operations/add_keywords_using_incremental_batch_job.rb +179 -0
  14. data/examples/v201601/advanced_operations/add_text_ad_with_upgraded_urls.rb +134 -0
  15. data/examples/v201601/advanced_operations/create_and_attach_shared_keyword_set.rb +141 -0
  16. data/examples/v201601/advanced_operations/find_and_remove_criteria_from_shared_set.rb +174 -0
  17. data/examples/v201601/advanced_operations/get_ad_group_bid_modifiers.rb +102 -0
  18. data/examples/v201601/advanced_operations/use_shared_bidding_strategy.rb +147 -0
  19. data/examples/v201601/basic_operations/add_ad_groups.rb +142 -0
  20. data/examples/v201601/basic_operations/add_campaigns.rb +139 -0
  21. data/examples/v201601/basic_operations/add_keywords.rb +114 -0
  22. data/examples/v201601/basic_operations/add_text_ads.rb +109 -0
  23. data/examples/v201601/basic_operations/get_ad_groups.rb +102 -0
  24. data/examples/v201601/basic_operations/get_campaigns.rb +97 -0
  25. data/examples/v201601/basic_operations/get_campaigns_with_awql.rb +89 -0
  26. data/examples/v201601/basic_operations/get_keywords.rb +109 -0
  27. data/examples/v201601/basic_operations/get_text_ads.rb +110 -0
  28. data/examples/v201601/basic_operations/pause_ad.rb +88 -0
  29. data/examples/v201601/basic_operations/remove_ad.rb +89 -0
  30. data/examples/v201601/basic_operations/remove_ad_group.rb +85 -0
  31. data/examples/v201601/basic_operations/remove_campaign.rb +87 -0
  32. data/examples/v201601/basic_operations/remove_keyword.rb +94 -0
  33. data/examples/v201601/basic_operations/update_ad_group.rb +85 -0
  34. data/examples/v201601/basic_operations/update_campaign.rb +86 -0
  35. data/examples/v201601/basic_operations/update_keyword.rb +106 -0
  36. data/examples/v201601/campaign_management/add_campaign_labels.rb +82 -0
  37. data/examples/v201601/campaign_management/add_complete_campaigns_using_batch_job.rb +356 -0
  38. data/examples/v201601/campaign_management/add_experiment.rb +162 -0
  39. data/examples/v201601/campaign_management/add_keywords_in_bulk.rb +153 -0
  40. data/examples/v201601/campaign_management/get_all_disapproved_ads.rb +97 -0
  41. data/examples/v201601/campaign_management/get_all_disapproved_ads_with_awql.rb +89 -0
  42. data/examples/v201601/campaign_management/get_campaigns_by_label.rb +108 -0
  43. data/examples/v201601/campaign_management/promote_experiment.rb +81 -0
  44. data/examples/v201601/campaign_management/set_ad_parameters.rb +118 -0
  45. data/examples/v201601/campaign_management/set_criterion_bid_modifier.rb +104 -0
  46. data/examples/v201601/campaign_management/validate_text_ad.rb +110 -0
  47. data/examples/v201601/error_handling/handle_partial_failures.rb +130 -0
  48. data/examples/v201601/error_handling/handle_policy_violation_error.rb +141 -0
  49. data/examples/v201601/extensions/add_google_my_business_location_extensions.rb +193 -0
  50. data/examples/v201601/extensions/add_site_links.rb +164 -0
  51. data/examples/v201601/extensions/add_site_links_using_feeds.rb +281 -0
  52. data/examples/v201601/migration/migrate_to_extension_settings.rb +386 -0
  53. data/examples/v201601/migration/upgrade_ad_url.rb +93 -0
  54. data/examples/v201601/misc/get_all_images_and_videos.rb +104 -0
  55. data/examples/v201601/misc/setup_oauth2.rb +84 -0
  56. data/examples/v201601/misc/upload_image.rb +93 -0
  57. data/examples/v201601/misc/upload_media_bundle.rb +90 -0
  58. data/examples/v201601/misc/use_oauth2_jwt.rb +93 -0
  59. data/examples/v201601/misc/use_runtime_config.rb +92 -0
  60. data/examples/v201601/optimization/estimate_keyword_traffic.rb +146 -0
  61. data/examples/v201601/optimization/get_keyword_bid_simulations.rb +95 -0
  62. data/examples/v201601/optimization/get_keyword_ideas.rb +126 -0
  63. data/examples/v201601/remarketing/add_audience.rb +118 -0
  64. data/examples/v201601/remarketing/add_conversion_tracker.rb +97 -0
  65. data/examples/v201601/remarketing/add_crm_based_user_list.rb +119 -0
  66. data/examples/v201601/remarketing/add_rule_based_user_lists.rb +167 -0
  67. data/examples/v201601/remarketing/upload_offline_conversions.rb +98 -0
  68. data/examples/v201601/reporting/download_criteria_report.rb +92 -0
  69. data/examples/v201601/reporting/download_criteria_report_with_awql.rb +93 -0
  70. data/examples/v201601/reporting/get_report_fields.rb +75 -0
  71. data/examples/v201601/reporting/parallel_report_download.rb +166 -0
  72. data/examples/v201601/reporting/stream_criteria_report_results.rb +97 -0
  73. data/examples/v201601/shopping_campaigns/add_product_partition_tree.rb +267 -0
  74. data/examples/v201601/shopping_campaigns/add_product_scope.rb +129 -0
  75. data/examples/v201601/shopping_campaigns/add_shopping_campaign.rb +129 -0
  76. data/examples/v201601/shopping_campaigns/get_product_category_taxonomy.rb +115 -0
  77. data/examples/v201601/targeting/add_campaign_targeting_criteria.rb +180 -0
  78. data/examples/v201601/targeting/add_demographic_targeting_criteria.rb +112 -0
  79. data/examples/v201601/targeting/get_campaign_targeting_criteria.rb +106 -0
  80. data/examples/v201601/targeting/get_targetable_languages_and_carriers.rb +89 -0
  81. data/examples/v201601/targeting/lookup_location.rb +108 -0
  82. data/lib/adwords_api/api_config.rb +90 -4
  83. data/lib/adwords_api/batch_job_utils.rb +29 -17
  84. data/lib/adwords_api/incremental_upload_helper.rb +5 -1
  85. data/lib/adwords_api/report_stream.rb +7 -8
  86. data/lib/adwords_api/report_utils.rb +4 -4
  87. data/lib/adwords_api/v201601/account_label_service.rb +46 -0
  88. data/lib/adwords_api/v201601/account_label_service_registry.rb +46 -0
  89. data/lib/adwords_api/v201601/ad_customizer_feed_service.rb +46 -0
  90. data/lib/adwords_api/v201601/ad_customizer_feed_service_registry.rb +46 -0
  91. data/lib/adwords_api/v201601/ad_group_ad_service.rb +70 -0
  92. data/lib/adwords_api/v201601/ad_group_ad_service_registry.rb +46 -0
  93. data/lib/adwords_api/v201601/ad_group_bid_modifier_service.rb +54 -0
  94. data/lib/adwords_api/v201601/ad_group_bid_modifier_service_registry.rb +46 -0
  95. data/lib/adwords_api/v201601/ad_group_criterion_service.rb +62 -0
  96. data/lib/adwords_api/v201601/ad_group_criterion_service_registry.rb +46 -0
  97. data/lib/adwords_api/v201601/ad_group_extension_setting_service.rb +54 -0
  98. data/lib/adwords_api/v201601/ad_group_extension_setting_service_registry.rb +46 -0
  99. data/lib/adwords_api/v201601/ad_group_feed_service.rb +54 -0
  100. data/lib/adwords_api/v201601/ad_group_feed_service_registry.rb +46 -0
  101. data/lib/adwords_api/v201601/ad_group_service.rb +62 -0
  102. data/lib/adwords_api/v201601/ad_group_service_registry.rb +46 -0
  103. data/lib/adwords_api/v201601/ad_param_service.rb +46 -0
  104. data/lib/adwords_api/v201601/ad_param_service_registry.rb +46 -0
  105. data/lib/adwords_api/v201601/adwords_user_list_service.rb +54 -0
  106. data/lib/adwords_api/v201601/adwords_user_list_service_registry.rb +46 -0
  107. data/lib/adwords_api/v201601/batch_job_service.rb +54 -0
  108. data/lib/adwords_api/v201601/batch_job_service_registry.rb +46 -0
  109. data/lib/adwords_api/v201601/bidding_strategy_service.rb +54 -0
  110. data/lib/adwords_api/v201601/bidding_strategy_service_registry.rb +46 -0
  111. data/lib/adwords_api/v201601/budget_order_service.rb +54 -0
  112. data/lib/adwords_api/v201601/budget_order_service_registry.rb +46 -0
  113. data/lib/adwords_api/v201601/budget_service.rb +54 -0
  114. data/lib/adwords_api/v201601/budget_service_registry.rb +46 -0
  115. data/lib/adwords_api/v201601/campaign_criterion_service.rb +54 -0
  116. data/lib/adwords_api/v201601/campaign_criterion_service_registry.rb +46 -0
  117. data/lib/adwords_api/v201601/campaign_extension_setting_service.rb +54 -0
  118. data/lib/adwords_api/v201601/campaign_extension_setting_service_registry.rb +46 -0
  119. data/lib/adwords_api/v201601/campaign_feed_service.rb +54 -0
  120. data/lib/adwords_api/v201601/campaign_feed_service_registry.rb +46 -0
  121. data/lib/adwords_api/v201601/campaign_service.rb +62 -0
  122. data/lib/adwords_api/v201601/campaign_service_registry.rb +46 -0
  123. data/lib/adwords_api/v201601/campaign_shared_set_service.rb +54 -0
  124. data/lib/adwords_api/v201601/campaign_shared_set_service_registry.rb +46 -0
  125. data/lib/adwords_api/v201601/constant_data_service.rb +110 -0
  126. data/lib/adwords_api/v201601/constant_data_service_registry.rb +46 -0
  127. data/lib/adwords_api/v201601/conversion_tracker_service.rb +54 -0
  128. data/lib/adwords_api/v201601/conversion_tracker_service_registry.rb +46 -0
  129. data/lib/adwords_api/v201601/customer_extension_setting_service.rb +54 -0
  130. data/lib/adwords_api/v201601/customer_extension_setting_service_registry.rb +46 -0
  131. data/lib/adwords_api/v201601/customer_feed_service.rb +54 -0
  132. data/lib/adwords_api/v201601/customer_feed_service_registry.rb +46 -0
  133. data/lib/adwords_api/v201601/customer_service.rb +54 -0
  134. data/lib/adwords_api/v201601/customer_service_registry.rb +46 -0
  135. data/lib/adwords_api/v201601/customer_sync_service.rb +38 -0
  136. data/lib/adwords_api/v201601/customer_sync_service_registry.rb +47 -0
  137. data/lib/adwords_api/v201601/data_service.rb +78 -0
  138. data/lib/adwords_api/v201601/data_service_registry.rb +46 -0
  139. data/lib/adwords_api/v201601/experiment_service.rb +46 -0
  140. data/lib/adwords_api/v201601/experiment_service_registry.rb +46 -0
  141. data/lib/adwords_api/v201601/feed_item_service.rb +54 -0
  142. data/lib/adwords_api/v201601/feed_item_service_registry.rb +46 -0
  143. data/lib/adwords_api/v201601/feed_mapping_service.rb +54 -0
  144. data/lib/adwords_api/v201601/feed_mapping_service_registry.rb +46 -0
  145. data/lib/adwords_api/v201601/feed_service.rb +54 -0
  146. data/lib/adwords_api/v201601/feed_service_registry.rb +46 -0
  147. data/lib/adwords_api/v201601/label_service.rb +54 -0
  148. data/lib/adwords_api/v201601/label_service_registry.rb +46 -0
  149. data/lib/adwords_api/v201601/location_criterion_service.rb +46 -0
  150. data/lib/adwords_api/v201601/location_criterion_service_registry.rb +46 -0
  151. data/lib/adwords_api/v201601/managed_customer_service.rb +78 -0
  152. data/lib/adwords_api/v201601/managed_customer_service_registry.rb +46 -0
  153. data/lib/adwords_api/v201601/media_service.rb +54 -0
  154. data/lib/adwords_api/v201601/media_service_registry.rb +46 -0
  155. data/lib/adwords_api/v201601/mutate_job_service.rb +54 -0
  156. data/lib/adwords_api/v201601/mutate_job_service_registry.rb +46 -0
  157. data/lib/adwords_api/v201601/offline_conversion_feed_service.rb +38 -0
  158. data/lib/adwords_api/v201601/offline_conversion_feed_service_registry.rb +46 -0
  159. data/lib/adwords_api/v201601/report_definition_service.rb +38 -0
  160. data/lib/adwords_api/v201601/report_definition_service_registry.rb +46 -0
  161. data/lib/adwords_api/v201601/shared_criterion_service.rb +54 -0
  162. data/lib/adwords_api/v201601/shared_criterion_service_registry.rb +46 -0
  163. data/lib/adwords_api/v201601/shared_set_service.rb +54 -0
  164. data/lib/adwords_api/v201601/shared_set_service_registry.rb +46 -0
  165. data/lib/adwords_api/v201601/targeting_idea_service.rb +38 -0
  166. data/lib/adwords_api/v201601/targeting_idea_service_registry.rb +46 -0
  167. data/lib/adwords_api/v201601/traffic_estimator_service.rb +38 -0
  168. data/lib/adwords_api/v201601/traffic_estimator_service_registry.rb +46 -0
  169. data/lib/adwords_api/version.rb +1 -1
  170. data/test/adwords_api/test_batch_job_utils.rb +11 -2
  171. metadata +163 -5
@@ -0,0 +1,97 @@
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 illustrates how to retrieve all the campaigns for an account.
20
+
21
+ require 'adwords_api'
22
+
23
+ def get_campaigns()
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
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
33
+
34
+ # Get all the campaigns for this account.
35
+ selector = {
36
+ :fields => ['Id', 'Name', 'Status'],
37
+ :ordering => [
38
+ {:field => 'Name', :sort_order => 'ASCENDING'}
39
+ ],
40
+ :paging => {
41
+ :start_index => 0,
42
+ :number_results => PAGE_SIZE
43
+ }
44
+ }
45
+
46
+ # Set initial values.
47
+ offset, page = 0, {}
48
+
49
+ begin
50
+ page = campaign_srv.get(selector)
51
+ if page[:entries]
52
+ page[:entries].each do |campaign|
53
+ puts "Campaign ID %d, name '%s' and status '%s'" %
54
+ [campaign[:id], campaign[:name], campaign[:status]]
55
+ end
56
+ # Increment values to request the next page.
57
+ offset += PAGE_SIZE
58
+ selector[:paging][:start_index] = offset
59
+ end
60
+ end while page[:total_num_entries] > offset
61
+
62
+ if page.include?(:total_num_entries)
63
+ puts "\tTotal number of campaigns found: %d." % [page[:total_num_entries]]
64
+ end
65
+ end
66
+
67
+ if __FILE__ == $0
68
+ API_VERSION = :v201601
69
+ PAGE_SIZE = 500
70
+
71
+ begin
72
+ get_campaigns()
73
+
74
+ # Authorization error.
75
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
76
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
77
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
78
+ "to retrieve and store OAuth2 tokens."
79
+ puts "See this wiki page for more details:\n\n " +
80
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
81
+
82
+ # HTTP errors.
83
+ rescue AdsCommon::Errors::HttpError => e
84
+ puts "HTTP Error: %s" % e
85
+
86
+ # API errors.
87
+ rescue AdwordsApi::Errors::ApiException => e
88
+ puts "Message: %s" % e.message
89
+ puts 'Errors:'
90
+ e.errors.each_with_index do |error, index|
91
+ puts "\tError [%d]:" % (index + 1)
92
+ error.each do |field, value|
93
+ puts "\t\t%s: %s" % [field, value]
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,89 @@
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 retrieve all the campaigns for an account with
20
+ # AWQL.
21
+
22
+ require 'adwords_api'
23
+
24
+ def get_campaigns_with_awql()
25
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
26
+ # when called without parameters.
27
+ adwords = AdwordsApi::Api.new
28
+
29
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
30
+ # the configuration file or provide your own logger:
31
+ # adwords.logger = Logger.new('adwords_xml.log')
32
+
33
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
34
+
35
+ # Get all the campaigns for this account.
36
+ query = 'SELECT Id, Name, Status ORDER BY Name'
37
+
38
+ # Set initial values.
39
+ offset, page = 0, {}
40
+
41
+ begin
42
+ page_query = query + ' LIMIT %d,%d' % [offset, PAGE_SIZE]
43
+ page = campaign_srv.query(page_query)
44
+ if page[:entries]
45
+ page[:entries].each do |campaign|
46
+ puts "Campaign ID %d, name '%s' and status '%s'" %
47
+ [campaign[:id], campaign[:name], campaign[:status]]
48
+ end
49
+ # Increment values to request the next page.
50
+ offset += PAGE_SIZE
51
+ end
52
+ end while page[:total_num_entries] > offset
53
+
54
+ if page.include?(:total_num_entries)
55
+ puts "\tTotal number of campaigns found: %d." % page[:total_num_entries]
56
+ end
57
+ end
58
+
59
+ if __FILE__ == $0
60
+ API_VERSION = :v201601
61
+ PAGE_SIZE = 500
62
+
63
+ begin
64
+ get_campaigns_with_awql()
65
+
66
+ # Authorization error.
67
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
68
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
69
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
70
+ "to retrieve and store OAuth2 tokens."
71
+ puts "See this wiki page for more details:\n\n " +
72
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
73
+
74
+ # HTTP errors.
75
+ rescue AdsCommon::Errors::HttpError => e
76
+ puts 'HTTP Error: %s' % e
77
+
78
+ # API errors.
79
+ rescue AdwordsApi::Errors::ApiException => e
80
+ puts 'Message: %s' % e.message
81
+ puts 'Errors:'
82
+ e.errors.each_with_index do |error, index|
83
+ puts "\tError [%d]:" % (index + 1)
84
+ error.each do |field, value|
85
+ puts "\t\t%s: %s" % [field, value]
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,109 @@
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 illustrates how to retrieve all keywords for an ad group. To add
20
+ # keywords to an existing ad group, run add_keywords.rb.
21
+
22
+ require 'adwords_api'
23
+
24
+ def get_keywords(ad_group_id)
25
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
26
+ # when called without parameters.
27
+ adwords = AdwordsApi::Api.new
28
+
29
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
30
+ # the configuration file or provide your own logger:
31
+ # adwords.logger = Logger.new('adwords_xml.log')
32
+
33
+ ad_group_criterion_srv =
34
+ adwords.service(:AdGroupCriterionService, API_VERSION)
35
+
36
+ # Get all keywords for this ad group.
37
+ selector = {
38
+ :fields => ['Id', 'CriteriaType', 'KeywordMatchType', 'KeywordText'],
39
+ :ordering => [
40
+ {:field => 'Id', :sort_order => 'ASCENDING'}
41
+ ],
42
+ :predicates => [
43
+ {:field => 'AdGroupId', :operator => 'EQUALS', :values => [ad_group_id]},
44
+ {:field => 'CriteriaType', :operator => 'EQUALS', :values => ['KEYWORD']}
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 = ad_group_criterion_srv.get(selector)
57
+ if page[:entries]
58
+ page[:entries].each do |keyword|
59
+ puts "Keyword ID %d, type '%s', text '%s', and match type '%s'" %
60
+ [keyword[:criterion][:id],
61
+ keyword[:criterion][:type],
62
+ keyword[:criterion][:text],
63
+ keyword[:criterion][:match_type]]
64
+ end
65
+ # Increment values to request the next page.
66
+ offset += PAGE_SIZE
67
+ selector[:paging][:start_index] = offset
68
+ end
69
+ end while page[:total_num_entries] > offset
70
+
71
+ if page.include?(:total_num_entries)
72
+ puts "\tAd group ID %d has %d keyword(s)." %
73
+ [ad_group_id, page[:total_num_entries]]
74
+ end
75
+ end
76
+
77
+ if __FILE__ == $0
78
+ API_VERSION = :v201601
79
+ PAGE_SIZE = 500
80
+
81
+ begin
82
+ # Ad group ID to get keywords for.
83
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
84
+ get_keywords(ad_group_id)
85
+
86
+ # Authorization error.
87
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
88
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
89
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
90
+ "to retrieve and store OAuth2 tokens."
91
+ puts "See this wiki page for more details:\n\n " +
92
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
93
+
94
+ # HTTP errors.
95
+ rescue AdsCommon::Errors::HttpError => e
96
+ puts "HTTP Error: %s" % e
97
+
98
+ # API errors.
99
+ rescue AdwordsApi::Errors::ApiException => e
100
+ puts "Message: %s" % e.message
101
+ puts 'Errors:'
102
+ e.errors.each_with_index do |error, index|
103
+ puts "\tError [%d]:" % (index + 1)
104
+ error.each do |field, value|
105
+ puts "\t\t%s: %s" % [field, value]
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,110 @@
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 illustrates how to retrieve all text ads for an ad group. To add
20
+ # ads to an existing ad group, run add_text_ads.rb.
21
+
22
+ require 'adwords_api'
23
+
24
+ def get_text_ads(ad_group_id)
25
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
26
+ # when called without parameters.
27
+ adwords = AdwordsApi::Api.new
28
+
29
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
30
+ # the configuration file or provide your own logger:
31
+ # adwords.logger = Logger.new('adwords_xml.log')
32
+
33
+ ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
34
+
35
+ # Get all the ads for this ad group.
36
+ selector = {
37
+ :fields => ['Id', 'Status', 'AdType'],
38
+ :ordering => [{:field => 'Id', :sort_order => 'ASCENDING'}],
39
+ # By default, disabled ads aren't returned by the selector. To return them,
40
+ # include the DISABLED status in a predicate.
41
+ :predicates => [
42
+ {:field => 'AdGroupId', :operator => 'IN', :values => [ad_group_id]},
43
+ {:field => 'Status',
44
+ :operator => 'IN',
45
+ :values => ['ENABLED', 'PAUSED', 'DISABLED']},
46
+ {:field => 'AdType',
47
+ :operator => 'EQUALS',
48
+ :values => ['TEXT_AD']}
49
+ ],
50
+ :paging => {
51
+ :start_index => 0,
52
+ :number_results => PAGE_SIZE
53
+ }
54
+ }
55
+
56
+ # Set initial values.
57
+ offset, page = 0, {}
58
+
59
+ begin
60
+ page = ad_group_ad_srv.get(selector)
61
+ if page[:entries]
62
+ page[:entries].each do |ad|
63
+ puts "Ad ID is %d, type is '%s' and status is '%s'" %
64
+ [ad[:ad][:id], ad[:ad][:ad_type], ad[:status]]
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 "\tAd group ID %d has %d ad(s)." %
74
+ [ad_group_id, page[:total_num_entries]]
75
+ end
76
+ end
77
+
78
+ if __FILE__ == $0
79
+ API_VERSION = :v201601
80
+ PAGE_SIZE = 500
81
+
82
+ begin
83
+ # Ad group ID to get text ads for.
84
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
85
+ get_text_ads(ad_group_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
+ 'https://github.com/googleads/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,88 @@
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 illustrates how to update an ad, setting its status to 'PAUSED'.
20
+ # To create ads, run add_text_ads.rb.
21
+
22
+ require 'adwords_api'
23
+
24
+ def pause_ad(ad_group_id, ad_id)
25
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
26
+ # when called without parameters.
27
+ adwords = AdwordsApi::Api.new
28
+
29
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
30
+ # the configuration file or provide your own logger:
31
+ # adwords.logger = Logger.new('adwords_xml.log')
32
+
33
+ ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
34
+
35
+ # Prepare operation for updating ad.
36
+ operation = {
37
+ :operator => 'SET',
38
+ :operand => {
39
+ :ad_group_id => ad_group_id,
40
+ :status => 'PAUSED',
41
+ :ad => {:id => ad_id}
42
+ }
43
+ }
44
+
45
+ # Update ad.
46
+ response = ad_group_ad_srv.mutate([operation])
47
+ if response and response[:value]
48
+ ad = response[:value].first
49
+ puts "Ad ID %d was successfully updated, status set to '%s'." %
50
+ [ad[:ad][:id], ad[:status]]
51
+ else
52
+ puts 'No ads were updated.'
53
+ end
54
+ end
55
+
56
+ if __FILE__ == $0
57
+ API_VERSION = :v201601
58
+
59
+ begin
60
+ # IDs of ad to pause and its ad group.
61
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
62
+ ad_id = 'INSERT_AD_ID_HERE'.to_i
63
+ pause_ad(ad_group_id, ad_id)
64
+
65
+ # Authorization error.
66
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
67
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
68
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
69
+ "to retrieve and store OAuth2 tokens."
70
+ puts "See this wiki page for more details:\n\n " +
71
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
72
+
73
+ # HTTP errors.
74
+ rescue AdsCommon::Errors::HttpError => e
75
+ puts "HTTP Error: %s" % e
76
+
77
+ # API errors.
78
+ rescue AdwordsApi::Errors::ApiException => e
79
+ puts "Message: %s" % e.message
80
+ puts 'Errors:'
81
+ e.errors.each_with_index do |error, index|
82
+ puts "\tError [%d]:" % (index + 1)
83
+ error.each do |field, value|
84
+ puts "\t\t%s: %s" % [field, value]
85
+ end
86
+ end
87
+ end
88
+ end