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,93 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2015, 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 code example upgrades an ad to use upgraded URLs.
20
+
21
+ require 'adwords_api'
22
+
23
+ def upgrade_ad_url(ad_group_id, ad_id)
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
+ ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
33
+
34
+ selector = {
35
+ :fields => ['Id', 'Url'],
36
+ :predicates => [
37
+ {:field => 'AdGroupId', :operator => 'EQUALS', :values => [ad_group_id]},
38
+ {:field => 'Id', :operator => 'EQUALS', :values => [ad_id]}
39
+ ]
40
+ }
41
+
42
+ page = ad_group_ad_srv.get(selector)
43
+ ad_group_ad = page[:entries][0] if page[:entries]
44
+
45
+ raise StandardError, "Ad not found." if ad_group_ad.nil?
46
+
47
+ ad_url_upgrade = {
48
+ :ad_id => ad_group_ad[:ad][:id],
49
+ :final_url => ad_group_ad[:ad][:url]
50
+ }
51
+
52
+ response = ad_group_ad_srv.upgrade_url([ad_url_upgrade])
53
+ if response
54
+ ad_group_ad = response.first
55
+ puts "Ad with ID %d and destination url '%s' was upgraded." %
56
+ [ad_group_ad[:id], ad_group_ad[:final_urls].first]
57
+ else
58
+ raise StandardError, 'failed to upgrade ads.'
59
+ end
60
+ end
61
+
62
+ if __FILE__ == $0
63
+ API_VERSION = :v201601
64
+
65
+ begin
66
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
67
+ ad_id = 'INSERT_AD_ID_HERE'.to_i
68
+ upgrade_ad_url(ad_group_id, ad_id)
69
+
70
+ # Authorization error.
71
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
72
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
73
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
74
+ "to retrieve and store OAuth2 tokens."
75
+ puts "See this wiki page for more details:\n\n " +
76
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
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
@@ -0,0 +1,104 @@
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 images and videos. To upload an
20
+ # image, run upload_image.rb. To upload video, see:
21
+ # http://adwords.google.com/support/aw/bin/answer.py?hl=en&answer=39454.
22
+
23
+ require 'adwords_api'
24
+
25
+ def get_all_images_and_videos()
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
+ media_srv = adwords.service(:MediaService, API_VERSION)
35
+
36
+ # Get all the images and videos.
37
+ selector = {
38
+ :fields => ['MediaId', 'Height', 'Width', 'MimeType', 'Urls'],
39
+ :ordering => [
40
+ {:field => 'MediaId', :sort_order => 'ASCENDING'}
41
+ ],
42
+ :predicates => [
43
+ {:field => 'Type', :operator => 'IN', :values => ['IMAGE', 'VIDEO']}
44
+ ],
45
+ :paging => {
46
+ :start_index => 0,
47
+ :number_results => PAGE_SIZE
48
+ }
49
+ }
50
+
51
+ # Set initial values.
52
+ offset, page = 0, {}
53
+
54
+ begin
55
+ page = media_srv.get(selector)
56
+ if page[:entries]
57
+ page[:entries].each do |entry|
58
+ full_dimensions = entry[:dimensions]['FULL']
59
+ puts "Entry ID %d with dimensions %dx%d and MIME type is '%s'" %
60
+ [entry[:media_id], full_dimensions[:height],
61
+ full_dimensions[:width], entry[:mime_type]]
62
+ end
63
+ # Increment values to request the next page.
64
+ offset += PAGE_SIZE
65
+ selector[:paging][:start_index] = offset
66
+ end
67
+ end while page[:total_num_entries] > offset
68
+
69
+ if page.include?(:total_num_entries)
70
+ puts "\tFound %d entries." % page[:total_num_entries]
71
+ end
72
+ end
73
+
74
+ if __FILE__ == $0
75
+ API_VERSION = :v201601
76
+ PAGE_SIZE = 500
77
+
78
+ begin
79
+ get_all_images_and_videos()
80
+
81
+ # Authorization error.
82
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
83
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
84
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
85
+ "to retrieve and store OAuth2 tokens."
86
+ puts "See this wiki page for more details:\n\n " +
87
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
88
+
89
+ # HTTP errors.
90
+ rescue AdsCommon::Errors::HttpError => e
91
+ puts "HTTP Error: %s" % e
92
+
93
+ # API errors.
94
+ rescue AdwordsApi::Errors::ApiException => e
95
+ puts "Message: %s" % e.message
96
+ puts 'Errors:'
97
+ e.errors.each_with_index do |error, index|
98
+ puts "\tError [%d]:" % (index + 1)
99
+ error.each do |field, value|
100
+ puts "\t\t%s: %s" % [field, value]
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2013, 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 set up OAuth2.0 authentication credentials.
20
+
21
+ require 'adwords_api'
22
+
23
+ def setup_oauth2()
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
+ # You can call authorize explicitly to obtain the access token. Otherwise, it
33
+ # will be invoked automatically on the first API call.
34
+ # There are two ways to provide verification code, first one is via the block:
35
+ token = adwords.authorize() do |auth_url|
36
+ puts "Hit Auth error, please navigate to URL:\n\t%s" % auth_url
37
+ print 'log in and type the verification code: '
38
+ verification_code = gets.chomp
39
+ verification_code
40
+ end
41
+ if token
42
+ print "\nWould you like to update your adwords_api.yml to save " +
43
+ "OAuth2 credentials? (y/N): "
44
+ response = gets.chomp
45
+ if ('y'.casecmp(response) == 0) or ('yes'.casecmp(response) == 0)
46
+ adwords.save_oauth2_token(token)
47
+ puts 'OAuth2 token is now saved to ~/adwords_api.yml and will be ' +
48
+ 'automatically used by the library.'
49
+ end
50
+ end
51
+
52
+ # Alternatively, you can provide one within the parameters:
53
+ # token = adwords.authorize({:oauth2_verification_code => verification_code})
54
+
55
+ # Note, 'token' is a Hash. Its value is not used in this example. If you need
56
+ # to be able to access the API in offline mode, with no user present, you
57
+ # should persist it to be used in subsequent invocations like this:
58
+ # adwords.authorize({:oauth2_token => token})
59
+
60
+ # No exception thrown - we are good to make a request.
61
+ end
62
+
63
+ if __FILE__ == $0
64
+ API_VERSION = :v201601
65
+
66
+ begin
67
+ setup_oauth2()
68
+
69
+ # HTTP errors.
70
+ rescue AdsCommon::Errors::HttpError => e
71
+ puts "HTTP Error: %s" % e
72
+
73
+ # API errors.
74
+ rescue AdwordsApi::Errors::ApiException => e
75
+ puts "Message: %s" % e.message
76
+ puts 'Errors:'
77
+ e.errors.each_with_index do |error, index|
78
+ puts "\tError [%d]:" % (index + 1)
79
+ error.each do |field, value|
80
+ puts "\t\t%s: %s" % [field, value]
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,93 @@
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 uploads an image. To get images, run get_all_images.rb.
20
+
21
+ require 'adwords_api'
22
+ require 'base64'
23
+
24
+ def upload_image()
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
+ media_srv = adwords.service(:MediaService, API_VERSION)
34
+
35
+ # Create image.
36
+ image_url =
37
+ 'http://www.google.com/intl/en/adwords/select/images/samples/inline.jpg'
38
+ # This utility method retrieves the contents of a URL using all of the config
39
+ # options provided to the Api object.
40
+ image_data = AdsCommon::Http.get(image_url, adwords.config)
41
+ base64_image_data = Base64.encode64(image_data)
42
+ image = {
43
+ # The 'xsi_type' field allows you to specify the xsi:type of the object
44
+ # being created. It's only necessary when you must provide an explicit
45
+ # type that the client library can't infer.
46
+ :xsi_type => 'Image',
47
+ :data => base64_image_data,
48
+ :type => 'IMAGE'
49
+ }
50
+
51
+ # Upload image.
52
+ response = media_srv.upload([image])
53
+ if response and !response.empty?
54
+ ret_image = response.first
55
+ full_dimensions = ret_image[:dimensions]['FULL']
56
+ puts ("Image with ID %d, dimensions %dx%d and MIME type '%s' uploaded " +
57
+ "successfully.") % [ret_image[:media_id], full_dimensions[:height],
58
+ full_dimensions[:width], ret_image[:mime_type]]
59
+ else
60
+ puts 'No images uploaded.'
61
+ end
62
+ end
63
+
64
+ if __FILE__ == $0
65
+ API_VERSION = :v201601
66
+
67
+ begin
68
+ upload_image()
69
+
70
+ # Authorization error.
71
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
72
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
73
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
74
+ "to retrieve and store OAuth2 tokens."
75
+ puts "See this wiki page for more details:\n\n " +
76
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
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
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2015, 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 uploads an HTML5 zip file.
20
+
21
+ require 'adwords_api'
22
+ require 'base64'
23
+
24
+ def upload_media_bundle()
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
+ media_srv = adwords.service(:MediaService, API_VERSION)
34
+
35
+ # Create HTML5 media.
36
+ html5_url = 'https://goo.gl/9Y7qI2'
37
+ # This utility method retrieves the contents of a URL using all of the config
38
+ # options provided to the Api object.
39
+ html5_data = AdsCommon::Http.get(html5_url, adwords.config)
40
+ base64_html5_data = Base64.encode64(html5_data)
41
+ media_bundle = {
42
+ :xsi_type => 'MediaBundle',
43
+ :data => base64_html5_data,
44
+ :type => 'MEDIA_BUNDLE'
45
+ }
46
+
47
+ # Upload HTML5 zip.
48
+ response = media_srv.upload([media_bundle])
49
+ if response and !response.empty?
50
+ ret_html5 = response.first
51
+ full_dimensions = ret_html5[:dimensions]['FULL']
52
+ puts ("HTML5 media with ID %d, dimensions %dx%d and MIME type '%s' " +
53
+ "uploaded successfully.") % [ret_html5[:media_id],
54
+ full_dimensions[:height], full_dimensions[:width],
55
+ ret_html5[:mime_type]]
56
+ else
57
+ puts 'No HTML5 zip was uploaded.'
58
+ end
59
+ end
60
+
61
+ if __FILE__ == $0
62
+ API_VERSION = :v201601
63
+
64
+ begin
65
+ upload_media_bundle()
66
+
67
+ # Authorization error.
68
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
69
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
70
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
71
+ "to retrieve and store OAuth2 tokens."
72
+ puts "See this wiki page for more details:\n\n " +
73
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
74
+
75
+ # HTTP errors.
76
+ rescue AdsCommon::Errors::HttpError => e
77
+ puts "HTTP Error: %s" % e
78
+
79
+ # API errors.
80
+ rescue AdwordsApi::Errors::ApiException => e
81
+ puts "Message: %s" % e.message
82
+ puts 'Errors:'
83
+ e.errors.each_with_index do |error, index|
84
+ puts "\tError [%d]:" % (index + 1)
85
+ error.each do |field, value|
86
+ puts "\t\t%s: %s" % [field, value]
87
+ end
88
+ end
89
+ end
90
+ end