google-adwords-api 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. data/ChangeLog +3 -0
  2. data/{README → README.md} +0 -0
  3. data/lib/adwords_api/api_config.rb +0 -76
  4. data/lib/adwords_api/version.rb +1 -1
  5. data/test/templates/v201309/basic_operations_get_campaigns.def +1 -1
  6. data/test/templates/v201309/misc_use_oauth2_jwt.def +1 -1
  7. metadata +3 -148
  8. data/examples/v201306/account_management/create_account.rb +0 -95
  9. data/examples/v201306/account_management/get_account_alerts.rb +0 -122
  10. data/examples/v201306/account_management/get_account_changes.rb +0 -145
  11. data/examples/v201306/account_management/get_account_hierarchy.rb +0 -103
  12. data/examples/v201306/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  13. data/examples/v201306/advanced_operations/add_click_to_download_ad.rb +0 -137
  14. data/examples/v201306/advanced_operations/add_site_links.rb +0 -244
  15. data/examples/v201306/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -147
  16. data/examples/v201306/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -181
  17. data/examples/v201306/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  18. data/examples/v201306/basic_operations/add_ad_groups.rb +0 -143
  19. data/examples/v201306/basic_operations/add_campaigns.rb +0 -162
  20. data/examples/v201306/basic_operations/add_keywords.rb +0 -116
  21. data/examples/v201306/basic_operations/add_text_ads.rb +0 -113
  22. data/examples/v201306/basic_operations/delete_ad.rb +0 -93
  23. data/examples/v201306/basic_operations/delete_ad_group.rb +0 -110
  24. data/examples/v201306/basic_operations/delete_campaign.rb +0 -111
  25. data/examples/v201306/basic_operations/delete_keyword.rb +0 -98
  26. data/examples/v201306/basic_operations/get_ad_groups.rb +0 -106
  27. data/examples/v201306/basic_operations/get_campaigns.rb +0 -101
  28. data/examples/v201306/basic_operations/get_campaigns_with_awql.rb +0 -93
  29. data/examples/v201306/basic_operations/get_keywords.rb +0 -112
  30. data/examples/v201306/basic_operations/get_text_ads.rb +0 -114
  31. data/examples/v201306/basic_operations/pause_ad.rb +0 -92
  32. data/examples/v201306/basic_operations/update_ad_group.rb +0 -89
  33. data/examples/v201306/basic_operations/update_campaign.rb +0 -90
  34. data/examples/v201306/basic_operations/update_keyword.rb +0 -110
  35. data/examples/v201306/campaign_management/add_experiment.rb +0 -166
  36. data/examples/v201306/campaign_management/add_keywords_in_bulk.rb +0 -158
  37. data/examples/v201306/campaign_management/add_location_extension.rb +0 -125
  38. data/examples/v201306/campaign_management/add_location_extension_override.rb +0 -91
  39. data/examples/v201306/campaign_management/get_all_disapproved_ads.rb +0 -101
  40. data/examples/v201306/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -92
  41. data/examples/v201306/campaign_management/promote_experiment.rb +0 -85
  42. data/examples/v201306/campaign_management/set_ad_parameters.rb +0 -122
  43. data/examples/v201306/campaign_management/set_criterion_bid_modifier.rb +0 -110
  44. data/examples/v201306/campaign_management/validate_text_ad.rb +0 -114
  45. data/examples/v201306/error_handling/handle_captcha_challenge.rb +0 -93
  46. data/examples/v201306/error_handling/handle_partial_failures.rb +0 -134
  47. data/examples/v201306/error_handling/handle_policy_violation_error.rb +0 -145
  48. data/examples/v201306/error_handling/handle_two_factor_authorization_error.rb +0 -88
  49. data/examples/v201306/migration/upgrade_legacy_sitelinks.rb +0 -313
  50. data/examples/v201306/misc/get_all_images_and_videos.rb +0 -108
  51. data/examples/v201306/misc/setup_oauth2.rb +0 -88
  52. data/examples/v201306/misc/upload_image.rb +0 -97
  53. data/examples/v201306/misc/use_oauth2_jwt.rb +0 -97
  54. data/examples/v201306/optimization/estimate_keyword_traffic.rb +0 -137
  55. data/examples/v201306/optimization/get_keyword_bid_simulations.rb +0 -100
  56. data/examples/v201306/optimization/get_keyword_ideas.rb +0 -130
  57. data/examples/v201306/optimization/get_placement_ideas.rb +0 -112
  58. data/examples/v201306/remarketing/add_audience.rb +0 -123
  59. data/examples/v201306/remarketing/add_conversion_tracker.rb +0 -104
  60. data/examples/v201306/reporting/download_criteria_report.rb +0 -87
  61. data/examples/v201306/reporting/download_criteria_report_with_awql.rb +0 -86
  62. data/examples/v201306/reporting/get_campaign_stats.rb +0 -113
  63. data/examples/v201306/reporting/get_report_fields.rb +0 -79
  64. data/examples/v201306/reporting/parallel_report_download.rb +0 -171
  65. data/examples/v201306/targeting/add_campaign_targeting_criteria.rb +0 -123
  66. data/examples/v201306/targeting/add_demographic_targeting_criteria.rb +0 -116
  67. data/examples/v201306/targeting/get_campaign_targeting_criteria.rb +0 -110
  68. data/examples/v201306/targeting/get_targetable_languages_and_carriers.rb +0 -94
  69. data/examples/v201306/targeting/lookup_location.rb +0 -112
  70. data/examples/v201402/advanced_operations/add_places_location_extensions.rb~ +0 -159
  71. data/examples/v201402/basic_operations/add_ad_groups.rb~ +0 -147
  72. data/examples/v201402/misc/create_ad_words_session_without_properties_file.rb~ +0 -94
  73. data/examples/v201402/remarketing/add_conversion_tracker.rb~ +0 -109
  74. data/examples/v201402/shopping_campaigns/add_product_partition_tree.rb~ +0 -269
  75. data/examples/v201402/shopping_campaigns/add_shopping_campaign.rb~ +0 -136
  76. data/examples/v201402/shopping_campaigns/get_product_category_taxonomy.rb~ +0 -128
  77. data/examples/v201402/shopping_campaigns/set_product_sales_channel.rb~ +0 -98
  78. data/lib/adwords_api/v201306/ad_extension_override_service.rb +0 -38
  79. data/lib/adwords_api/v201306/ad_extension_override_service_registry.rb +0 -46
  80. data/lib/adwords_api/v201306/ad_group_ad_service.rb +0 -42
  81. data/lib/adwords_api/v201306/ad_group_ad_service_registry.rb +0 -46
  82. data/lib/adwords_api/v201306/ad_group_bid_modifier_service.rb +0 -38
  83. data/lib/adwords_api/v201306/ad_group_bid_modifier_service_registry.rb +0 -46
  84. data/lib/adwords_api/v201306/ad_group_criterion_service.rb +0 -42
  85. data/lib/adwords_api/v201306/ad_group_criterion_service_registry.rb +0 -46
  86. data/lib/adwords_api/v201306/ad_group_feed_service.rb +0 -38
  87. data/lib/adwords_api/v201306/ad_group_feed_service_registry.rb +0 -46
  88. data/lib/adwords_api/v201306/ad_group_service.rb +0 -42
  89. data/lib/adwords_api/v201306/ad_group_service_registry.rb +0 -46
  90. data/lib/adwords_api/v201306/ad_param_service.rb +0 -38
  91. data/lib/adwords_api/v201306/ad_param_service_registry.rb +0 -46
  92. data/lib/adwords_api/v201306/adwords_user_list_service.rb +0 -38
  93. data/lib/adwords_api/v201306/adwords_user_list_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201306/alert_service.rb +0 -34
  95. data/lib/adwords_api/v201306/alert_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201306/bidding_strategy_service.rb +0 -38
  97. data/lib/adwords_api/v201306/bidding_strategy_service_registry.rb +0 -46
  98. data/lib/adwords_api/v201306/budget_order_service.rb +0 -42
  99. data/lib/adwords_api/v201306/budget_order_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201306/budget_service.rb +0 -38
  101. data/lib/adwords_api/v201306/budget_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201306/campaign_ad_extension_service.rb +0 -38
  103. data/lib/adwords_api/v201306/campaign_ad_extension_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201306/campaign_criterion_service.rb +0 -42
  105. data/lib/adwords_api/v201306/campaign_criterion_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201306/campaign_feed_service.rb +0 -38
  107. data/lib/adwords_api/v201306/campaign_feed_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201306/campaign_service.rb +0 -42
  109. data/lib/adwords_api/v201306/campaign_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201306/campaign_shared_set_service.rb +0 -38
  111. data/lib/adwords_api/v201306/campaign_shared_set_service_registry.rb +0 -47
  112. data/lib/adwords_api/v201306/constant_data_service.rb +0 -62
  113. data/lib/adwords_api/v201306/constant_data_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201306/conversion_tracker_service.rb +0 -38
  115. data/lib/adwords_api/v201306/conversion_tracker_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201306/customer_service.rb +0 -34
  117. data/lib/adwords_api/v201306/customer_service_registry.rb +0 -46
  118. data/lib/adwords_api/v201306/customer_sync_service.rb +0 -34
  119. data/lib/adwords_api/v201306/customer_sync_service_registry.rb +0 -47
  120. data/lib/adwords_api/v201306/data_service.rb +0 -38
  121. data/lib/adwords_api/v201306/data_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201306/experiment_service.rb +0 -38
  123. data/lib/adwords_api/v201306/experiment_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201306/feed_item_service.rb +0 -38
  125. data/lib/adwords_api/v201306/feed_item_service_registry.rb +0 -46
  126. data/lib/adwords_api/v201306/feed_mapping_service.rb +0 -38
  127. data/lib/adwords_api/v201306/feed_mapping_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201306/feed_service.rb +0 -38
  129. data/lib/adwords_api/v201306/feed_service_registry.rb +0 -46
  130. data/lib/adwords_api/v201306/geo_location_service.rb +0 -34
  131. data/lib/adwords_api/v201306/geo_location_service_registry.rb +0 -46
  132. data/lib/adwords_api/v201306/location_criterion_service.rb +0 -34
  133. data/lib/adwords_api/v201306/location_criterion_service_registry.rb +0 -46
  134. data/lib/adwords_api/v201306/managed_customer_service.rb +0 -50
  135. data/lib/adwords_api/v201306/managed_customer_service_registry.rb +0 -46
  136. data/lib/adwords_api/v201306/media_service.rb +0 -38
  137. data/lib/adwords_api/v201306/media_service_registry.rb +0 -46
  138. data/lib/adwords_api/v201306/mutate_job_service.rb +0 -42
  139. data/lib/adwords_api/v201306/mutate_job_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201306/report_definition_service.rb +0 -34
  141. data/lib/adwords_api/v201306/report_definition_service_registry.rb +0 -46
  142. data/lib/adwords_api/v201306/shared_criterion_service.rb +0 -38
  143. data/lib/adwords_api/v201306/shared_criterion_service_registry.rb +0 -47
  144. data/lib/adwords_api/v201306/shared_set_service.rb +0 -38
  145. data/lib/adwords_api/v201306/shared_set_service_registry.rb +0 -47
  146. data/lib/adwords_api/v201306/targeting_idea_service.rb +0 -38
  147. data/lib/adwords_api/v201306/targeting_idea_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201306/traffic_estimator_service.rb +0 -34
  149. data/lib/adwords_api/v201306/traffic_estimator_service_registry.rb +0 -46
  150. data/test/adwords_api/test_adwords_api.rb~ +0 -127
  151. data/test/templates/v201306/basic_operations_get_campaigns.def +0 -114
  152. data/test/templates/v201306/misc_use_oauth2_jwt.def +0 -131
@@ -1,313 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example migrates legacy sitelinks to upgraded sitelinks for a given list
22
- # of campaigns. The campaigns must be upgraded to enhanced campaigns before you
23
- # can run this example. To upgrade a campaign to enhanced, run
24
- # set_campaign_enhanced.rb. To get all campaigns, run get_campaigns.rb.
25
- #
26
- # Tags: CampaignAdExtensionService.get, CampaignAdExtensionService.mutate
27
- # Tags: FeedService.mutate, FeedItemService.mutate, FeedMappingService.mutate
28
- # Tags: CampaignFeedService.mutate
29
-
30
- require 'adwords_api'
31
-
32
- def upgrade_legacy_sitelinks(campaign_ids)
33
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
34
- # when called without parameters.
35
- adwords = AdwordsApi::Api.new
36
-
37
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
38
- # the configuration file or provide your own logger:
39
- # adwords.logger = Logger.new('adwords_xml.log')
40
-
41
- # Obtain the required services.
42
- campaign_ad_extension_srv =
43
- adwords.service(:CampaignAdExtensionService, API_VERSION)
44
- feed_mapping_srv = adwords.service(:FeedMappingService, API_VERSION)
45
- feed_srv = adwords.service(:FeedService, API_VERSION)
46
- feed_item_srv = adwords.service(:FeedItemService, API_VERSION)
47
- campaign_feed_srv = adwords.service(:CampaignFeedService, API_VERSION)
48
-
49
- # Try to retrieve an existing feed that has been mapped for use with
50
- # sitelinks. If multiple such feeds exist, the first matching feed is
51
- # retrieved. You could modify this code example to retrieve all the feeds
52
- # and pick the appropriate feed based on user input.
53
- site_links_feed = get_existing_feed(feed_mapping_srv)
54
- if site_links_feed.nil?
55
- # Create a feed for storing sitelinks.
56
- site_links_feed = create_site_links_feed(feed_srv)
57
- # Map the feed for using with sitelinks.
58
- create_site_links_feed_mapping(feed_mapping_srv, site_links_feed)
59
- end
60
-
61
- campaign_ids.each do |campaign_id|
62
- # Get legacy extensions for the campaign.
63
- legacy_extensions = get_legacy_extensions_for_campaign(
64
- campaign_ad_extension_srv, campaign_id)
65
- legacy_extensions.each do |extension|
66
- # Get the sitelinks.
67
- legacy_site_links = extension[:ad_extension][:sitelinks]
68
-
69
- # Add the sitelinks to the feed.
70
- site_link_feed_item_ids = create_site_link_feed_items(feed_item_srv,
71
- site_links_feed,
72
- legacy_site_links)
73
-
74
- # Associate feeditems to the campaign.
75
- associate_sitelink_feed_items_with_campaign(campaign_feed_srv,
76
- site_links_feed,
77
- site_link_feed_item_ids,
78
- campaign_id)
79
-
80
- # Once the upgraded sitelinks are added to a campaign, the legacy
81
- # sitelinks will stop serving. You can delete the legacy sitelinks
82
- # once you have verified that the migration went fine. In case the
83
- # migration didn't succeed, you can roll back the migration by deleting
84
- # the campaign feed you created in the previous step.
85
- campaign_ad_extension_srv.mutate([
86
- {:operator => 'REMOVE', :operand => extension}
87
- ])
88
- end
89
- end
90
- end
91
-
92
- # Create a feed for holding upgraded sitelinks.
93
- def create_site_links_feed(feed_srv)
94
- # Create the feed.
95
- site_links_feed = {
96
- :name => 'Feed For Sitelinks',
97
- :attributes => [
98
- {:type => 'STRING', :name => 'Link Text'},
99
- {:type => 'URL', :name => 'Link URL'}
100
- ],
101
- :origin => 'USER'
102
- }
103
-
104
- # Add the feed.
105
- response = feed_srv.mutate([
106
- {:operator => 'ADD', :operand => site_links_feed}
107
- ])
108
-
109
- saved_feed = response[:value].first
110
- return {
111
- :site_links_feed_id => saved_feed[:id],
112
- :saved_attributes => saved_feed[:attributes],
113
- :link_text_feed_attribute_id => saved_feed[:attributes][0][:id],
114
- :link_url_feed_attribute_id => saved_feed[:attributes][1][:id]
115
- }
116
- end
117
-
118
- # Map the feed for use with Sitelinks.
119
- def create_site_links_feed_mapping(feed_mapping_srv, site_links_feed)
120
- # Map the feedAttributeIds to the fieldId constants.
121
- link_text_field_mapping = {
122
- :feed_attribute_id => site_links_feed[:link_text_feed_attribute_id],
123
- :field_id => PLACEHOLDER_FIELD_SITELINK_TEXT
124
- }
125
- link_url_field_mapping = {
126
- :feed_attribute_id => site_links_feed[:link_url_feed_attribute_id],
127
- :field_id => PLACEHOLDER_FIELD_SITELINK_URL
128
- }
129
-
130
- # Create the field mapping.
131
- feed_mapping = {
132
- :placeholder_type => PLACEHOLDER_SITELINKS,
133
- :feed_id => site_links_feed[:site_links_feed_id],
134
- :attribute_field_mappings =>
135
- [link_text_field_mapping, link_url_field_mapping]
136
- }
137
-
138
- # Save the field mapping.
139
- feed_mapping_srv.mutate([{:operator => 'ADD', :operand => feed_mapping}])
140
- end
141
-
142
- # Retrieves an existing feed that is mapped to hold sitelinks. The first active
143
- # sitelinks feed is retrieved by this method.
144
- def get_existing_feed(feed_mapping_srv)
145
- selector = {
146
- :fields => ['FeedId', 'FeedMappingId', 'PlaceholderType', 'Status',
147
- 'AttributeFieldMappings'],
148
- :predicates => [
149
- {
150
- :field => 'PlaceholderType',
151
- :operator => 'EQUALS',
152
- :values => [PLACEHOLDER_SITELINKS]
153
- },
154
- {:field => 'Status', :operator => 'EQUALS', :values => ['ACTIVE']}
155
- ]
156
- }
157
-
158
- response = feed_mapping_srv.get(selector)
159
- if response and response[:entries]
160
- response[:entries].each do |feed_mapping|
161
- feed_id = feed_mapping[:feed_id]
162
- text_attribute_id = nil
163
- url_attribute_id = nil
164
- feed_mapping[:attribute_field_mappings].each do |attribute_mapping|
165
- case attribute_mapping[:field_id].to_i
166
- when PLACEHOLDER_FIELD_SITELINK_TEXT
167
- text_attribute_id = attribute_mapping[:feed_attribute_id]
168
- when PLACEHOLDER_FIELD_SITELINK_URL
169
- url_attribute_id = attribute_mapping[:feed_attribute_id]
170
- end
171
- end
172
- unless feed_id.nil? or text_attribute_id.nil? or url_attribute_id.nil?
173
- return {
174
- :site_links_feed_id => feed_id,
175
- :link_text_feed_attribute_id => text_attribute_id,
176
- :link_url_feed_attribute_id => url_attribute_id
177
- }
178
- end
179
- end
180
- end
181
- return nil
182
- end
183
-
184
- # Gets legacy sitelink extensions for a campaign.
185
- def get_legacy_extensions_for_campaign(campaign_ad_extension_srv, campaign_id)
186
- # Create the selector.
187
- selector = {
188
- :fields => ['CampaignId', 'AdExtensionId',
189
- 'Status', 'DisplayText', 'DestinationUrl'],
190
- :predicates => [
191
- # Filter the results for specified campaign id.
192
- {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]},
193
- # Filter the results for active campaign ad extensions. You may add
194
- # additional filtering conditions here as required.
195
- {:field => 'Status', :operator => 'EQUALS', :values => ['ACTIVE']},
196
- {
197
- :field => 'AdExtensionType',
198
- :operator => 'EQUALS',
199
- :values => ['SITELINKS_EXTENSION']
200
- }
201
- ]
202
- }
203
- response = campaign_ad_extension_srv.get(selector)
204
- return (response and response[:entries]) ? response[:entries] : []
205
- end
206
-
207
- # Adds legacy sitelinks to the sitelinks feed.
208
- def create_site_link_feed_items(feed_item_srv, site_links_feed, site_links)
209
- # Create operation for adding each legacy sitelink to the sitelinks feed.
210
- feed_item_operations = site_links.map do |site_link|
211
- {
212
- :operator => 'ADD',
213
- :operand => {
214
- :feed_id => site_links_feed[:site_links_feed_id],
215
- :attribute_values => [
216
- {
217
- :feed_attribute_id => site_links_feed[:link_text_feed_attribute_id],
218
- :string_value => site_link[:display_text]
219
- },
220
- {
221
- :feed_attribute_id => site_links_feed[:link_url_feed_attribute_id],
222
- :string_value => site_link[:destination_url]
223
- }
224
- ]
225
- }
226
- }
227
- end
228
-
229
- response = feed_item_srv.mutate(feed_item_operations);
230
- # Retrieve the feed item ids.
231
- site_link_feed_item_ids = response[:value].map {|item| item[:feed_item_id]}
232
- return site_link_feed_item_ids
233
- end
234
-
235
- # Associates sitelink feed items with a campaign.
236
- def associate_sitelink_feed_items_with_campaign(campaign_feed_srv,
237
- site_links_feed, site_link_feed_item_ids, campaign_id)
238
- # Create a custom matching function that matches the given feed items to the
239
- # campaign.
240
- request_context_operand = {
241
- :xsi_type => 'RequestContextOperand',
242
- :context_type => 'FEED_ITEM_ID'
243
- }
244
-
245
- operands = site_link_feed_item_ids.map do |feed_item_id|
246
- {
247
- :xsi_type => 'ConstantOperand',
248
- :long_value => feed_item_id,
249
- :type => 'LONG'
250
- }
251
- end
252
-
253
- function = {
254
- :operator => 'IN',
255
- :lhs_operand => [request_context_operand],
256
- :rhs_operand => operands
257
- }
258
-
259
- # Create upgraded sitelinks for the campaign. Use the sitelinks feed we
260
- # created, and restrict feed items by matching function.
261
- campaign_feed = {
262
- :feed_id => site_links_feed[:site_links_feed_id],
263
- :campaign_id => campaign_id,
264
- :matching_function => function,
265
- :placeholder_types => [PLACEHOLDER_SITELINKS]
266
- }
267
-
268
- campaign_feed_srv.mutate([{:operator => 'ADD', :operand => campaign_feed}])
269
- end
270
-
271
- if __FILE__ == $0
272
- API_VERSION = :v201306
273
-
274
- # See the Placeholder reference page for a list of all the placeholder types
275
- # and fields, see:
276
- # https://developers.google.com/adwords/api/docs/appendix/placeholders
277
- PLACEHOLDER_SITELINKS = 1
278
- PLACEHOLDER_FIELD_SITELINK_TEXT = 1
279
- PLACEHOLDER_FIELD_SITELINK_URL = 2
280
-
281
- begin
282
- # IDs of campaigns to add upgrade legacy sitelinks for.
283
- campaign_ids = [
284
- 'INSERT_CAMPAIGN_ID_HERE'.to_i,
285
- 'INSERT_CAMPAIGN_ID_HERE'.to_i
286
- ]
287
-
288
- upgrade_legacy_sitelinks(campaign_ids)
289
-
290
- # Authorization error.
291
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
292
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
293
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
294
- "to retrieve and store OAuth2 tokens."
295
- puts "See this wiki page for more details:\n\n " +
296
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
297
-
298
- # HTTP errors.
299
- rescue AdsCommon::Errors::HttpError => e
300
- puts "HTTP Error: %s" % e
301
-
302
- # API errors.
303
- rescue AdwordsApi::Errors::ApiException => e
304
- puts "Message: %s" % e.message
305
- puts 'Errors:'
306
- e.errors.each_with_index do |error, index|
307
- puts "\tError [%d]:" % (index + 1)
308
- error.each do |field, value|
309
- puts "\t\t%s: %s" % [field, value]
310
- end
311
- end
312
- end
313
- end
@@ -1,108 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example illustrates how to retrieve all images and videos. To upload an
22
- # image, run upload_image.rb. To upload video, see:
23
- # http://adwords.google.com/support/aw/bin/answer.py?hl=en&answer=39454.
24
- #
25
- # Tags: MediaService.get
26
-
27
- require 'adwords_api'
28
-
29
- def get_all_images_and_videos()
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
- media_srv = adwords.service(:MediaService, API_VERSION)
39
-
40
- # Get all the images and videos.
41
- selector = {
42
- :fields => ['MediaId', 'Height', 'Width', 'MimeType', 'Urls'],
43
- :ordering => [
44
- {:field => 'MediaId', :sort_order => 'ASCENDING'}
45
- ],
46
- :predicates => [
47
- {:field => 'Type', :operator => 'IN', :values => ['IMAGE', 'VIDEO']}
48
- ],
49
- :paging => {
50
- :start_index => 0,
51
- :number_results => PAGE_SIZE
52
- }
53
- }
54
-
55
- # Set initial values.
56
- offset, page = 0, {}
57
-
58
- begin
59
- page = media_srv.get(selector)
60
- if page[:entries]
61
- page[:entries].each do |entry|
62
- full_dimensions = entry[:dimensions]['FULL']
63
- puts "Entry ID %d with dimensions %dx%d and MIME type is '%s'" %
64
- [entry[:media_id], full_dimensions[:height],
65
- full_dimensions[:width], entry[:mime_type]]
66
- end
67
- # Increment values to request the next page.
68
- offset += PAGE_SIZE
69
- selector[:paging][:start_index] = offset
70
- end
71
- end while page[:total_num_entries] > offset
72
-
73
- if page.include?(:total_num_entries)
74
- puts "\tFound %d entries." % page[:total_num_entries]
75
- end
76
- end
77
-
78
- if __FILE__ == $0
79
- API_VERSION = :v201306
80
- PAGE_SIZE = 500
81
-
82
- begin
83
- get_all_images_and_videos()
84
-
85
- # Authorization error.
86
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
87
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
88
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
89
- "to retrieve and store OAuth2 tokens."
90
- puts "See this wiki page for more details:\n\n " +
91
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
92
-
93
- # HTTP errors.
94
- rescue AdsCommon::Errors::HttpError => e
95
- puts "HTTP Error: %s" % e
96
-
97
- # API errors.
98
- rescue AdwordsApi::Errors::ApiException => e
99
- puts "Message: %s" % e.message
100
- puts 'Errors:'
101
- e.errors.each_with_index do |error, index|
102
- puts "\tError [%d]:" % (index + 1)
103
- error.each do |field, value|
104
- puts "\t\t%s: %s" % [field, value]
105
- end
106
- end
107
- end
108
- end
@@ -1,88 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example illustrates how to set up OAuth2.0 authentication credentials.
22
- #
23
- # Tags: CampaignService.get
24
-
25
- require 'adwords_api'
26
-
27
- def setup_oauth2()
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
- # You can call authorize explicitly to obtain the access token. Otherwise, it
37
- # will be invoked automatically on the first API call.
38
- # There are two ways to provide verification code, first one is via the block:
39
- token = adwords.authorize() do |auth_url|
40
- puts "Hit Auth error, please navigate to URL:\n\t%s" % auth_url
41
- print 'log in and type the verification code: '
42
- verification_code = gets.chomp
43
- verification_code
44
- end
45
- if token
46
- print "\nWould you like to update your adwords_api.yml to save " +
47
- "OAuth2 credentials? (y/N): "
48
- response = gets.chomp
49
- if ('y'.casecmp(response) == 0) or ('yes'.casecmp(response) == 0)
50
- adwords.save_oauth2_token(token)
51
- puts 'OAuth2 token is now saved to ~/adwords_api.yml and will be ' +
52
- 'automatically used by the library.'
53
- end
54
- end
55
-
56
- # Alternatively, you can provide one within the parameters:
57
- # token = adwords.authorize({:oauth2_verification_code => verification_code})
58
-
59
- # Note, 'token' is a Hash. Its value is not used in this example. If you need
60
- # to be able to access the API in offline mode, with no user present, you
61
- # should persist it to be used in subsequent invocations like this:
62
- # adwords.authorize({:oauth2_token => token})
63
-
64
- # No exception thrown - we are good to make a request.
65
- end
66
-
67
- if __FILE__ == $0
68
- API_VERSION = :v201306
69
-
70
- begin
71
- setup_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