google-adwords-api 0.10.0 → 0.11.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 (184) hide show
  1. data/ChangeLog +3 -0
  2. data/examples/v201306/misc/setup_oauth2.rb +4 -4
  3. data/examples/v201306/optimization/get_keyword_ideas.rb +1 -1
  4. data/examples/v201309/advanced_operations/add_site_links.rb +71 -9
  5. data/examples/v201309/advanced_operations/update_site_links.rb +194 -0
  6. data/examples/v201309/misc/setup_oauth2.rb +4 -4
  7. data/examples/v201309/optimization/get_keyword_ideas.rb +1 -1
  8. data/lib/adwords_api/api_config.rb +0 -88
  9. data/lib/adwords_api/version.rb +1 -1
  10. data/test/templates/v201306/basic_operations_get_campaigns.def +1 -1
  11. data/test/templates/v201306/misc_use_oauth2_jwt.def +1 -1
  12. data/test/templates/v201309/basic_operations_get_campaigns.def +1 -1
  13. data/test/templates/v201309/misc_use_oauth2_jwt.def +1 -1
  14. metadata +266 -429
  15. data/examples/v201302/account_management/create_account.rb +0 -95
  16. data/examples/v201302/account_management/get_account_alerts.rb +0 -122
  17. data/examples/v201302/account_management/get_account_changes.rb +0 -145
  18. data/examples/v201302/account_management/get_account_hierarchy.rb +0 -103
  19. data/examples/v201302/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  20. data/examples/v201302/advanced_operations/add_click_to_download_ad.rb +0 -137
  21. data/examples/v201302/advanced_operations/add_site_links.rb +0 -221
  22. data/examples/v201302/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -147
  23. data/examples/v201302/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -181
  24. data/examples/v201302/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  25. data/examples/v201302/adwords_for_video/add_video_call_to_action.rb +0 -94
  26. data/examples/v201302/adwords_for_video/add_video_campaign.rb +0 -103
  27. data/examples/v201302/adwords_for_video/find_videos.rb +0 -92
  28. data/examples/v201302/adwords_for_video/get_keyword_criteria.rb +0 -101
  29. data/examples/v201302/adwords_for_video/get_targeting_groups.rb +0 -93
  30. data/examples/v201302/adwords_for_video/get_video_campaign_criteria.rb +0 -99
  31. data/examples/v201302/adwords_for_video/get_video_campaign_stats.rb +0 -126
  32. data/examples/v201302/adwords_for_video/get_video_campaigns.rb +0 -94
  33. data/examples/v201302/basic_operations/add_ad_groups.rb +0 -143
  34. data/examples/v201302/basic_operations/add_campaigns.rb +0 -162
  35. data/examples/v201302/basic_operations/add_keywords.rb +0 -116
  36. data/examples/v201302/basic_operations/add_text_ads.rb +0 -113
  37. data/examples/v201302/basic_operations/delete_ad.rb +0 -93
  38. data/examples/v201302/basic_operations/delete_ad_group.rb +0 -110
  39. data/examples/v201302/basic_operations/delete_campaign.rb +0 -111
  40. data/examples/v201302/basic_operations/delete_keyword.rb +0 -98
  41. data/examples/v201302/basic_operations/get_ad_groups.rb +0 -106
  42. data/examples/v201302/basic_operations/get_campaigns.rb +0 -101
  43. data/examples/v201302/basic_operations/get_campaigns_with_awql.rb +0 -93
  44. data/examples/v201302/basic_operations/get_keywords.rb +0 -112
  45. data/examples/v201302/basic_operations/get_text_ads.rb +0 -114
  46. data/examples/v201302/basic_operations/pause_ad.rb +0 -92
  47. data/examples/v201302/basic_operations/update_ad_group.rb +0 -89
  48. data/examples/v201302/basic_operations/update_campaign.rb +0 -90
  49. data/examples/v201302/basic_operations/update_keyword.rb +0 -110
  50. data/examples/v201302/campaign_management/add_experiment.rb +0 -166
  51. data/examples/v201302/campaign_management/add_keywords_in_bulk.rb +0 -158
  52. data/examples/v201302/campaign_management/add_location_extension.rb +0 -125
  53. data/examples/v201302/campaign_management/add_location_extension_override.rb +0 -91
  54. data/examples/v201302/campaign_management/get_all_disapproved_ads.rb +0 -101
  55. data/examples/v201302/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -92
  56. data/examples/v201302/campaign_management/promote_experiment.rb +0 -85
  57. data/examples/v201302/campaign_management/set_ad_parameters.rb +0 -122
  58. data/examples/v201302/campaign_management/set_criterion_bid_modifier.rb +0 -110
  59. data/examples/v201302/campaign_management/validate_text_ad.rb +0 -114
  60. data/examples/v201302/error_handling/handle_captcha_challenge.rb +0 -93
  61. data/examples/v201302/error_handling/handle_partial_failures.rb +0 -134
  62. data/examples/v201302/error_handling/handle_policy_violation_error.rb +0 -145
  63. data/examples/v201302/error_handling/handle_two_factor_authorization_error.rb +0 -88
  64. data/examples/v201302/migration/set_campaign_enhanced.rb +0 -91
  65. data/examples/v201302/migration/upgrade_legacy_sitelinks.rb +0 -313
  66. data/examples/v201302/misc/get_all_images_and_videos.rb +0 -108
  67. data/examples/v201302/misc/setup_oauth2.rb +0 -88
  68. data/examples/v201302/misc/upload_image.rb +0 -97
  69. data/examples/v201302/misc/use_oauth2_jwt.rb +0 -93
  70. data/examples/v201302/optimization/estimate_keyword_traffic.rb +0 -137
  71. data/examples/v201302/optimization/get_keyword_bid_simulations.rb +0 -100
  72. data/examples/v201302/optimization/get_keyword_ideas.rb +0 -130
  73. data/examples/v201302/optimization/get_placement_ideas.rb +0 -112
  74. data/examples/v201302/remarketing/add_audience.rb +0 -123
  75. data/examples/v201302/remarketing/add_conversion_tracker.rb +0 -104
  76. data/examples/v201302/reporting/download_criteria_report.rb +0 -87
  77. data/examples/v201302/reporting/download_criteria_report_with_awql.rb +0 -86
  78. data/examples/v201302/reporting/get_campaign_stats.rb +0 -113
  79. data/examples/v201302/reporting/get_report_fields.rb +0 -79
  80. data/examples/v201302/reporting/parallel_report_download.rb +0 -171
  81. data/examples/v201302/targeting/add_campaign_targeting_criteria.rb +0 -123
  82. data/examples/v201302/targeting/add_demographic_targeting_criteria.rb +0 -116
  83. data/examples/v201302/targeting/get_campaign_targeting_criteria.rb +0 -110
  84. data/examples/v201302/targeting/get_targetable_languages_and_carriers.rb +0 -94
  85. data/examples/v201302/targeting/lookup_location.rb +0 -112
  86. data/examples/v201309/campaign_management/add_location_extension_override.rb +0 -91
  87. data/examples/v201309/reporting/get_campaign_stats.rb +0 -113
  88. data/lib/adwords_api/v201302/ad_extension_override_service.rb +0 -38
  89. data/lib/adwords_api/v201302/ad_extension_override_service_registry.rb +0 -46
  90. data/lib/adwords_api/v201302/ad_group_ad_service.rb +0 -42
  91. data/lib/adwords_api/v201302/ad_group_ad_service_registry.rb +0 -46
  92. data/lib/adwords_api/v201302/ad_group_bid_modifier_service.rb +0 -38
  93. data/lib/adwords_api/v201302/ad_group_bid_modifier_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201302/ad_group_criterion_service.rb +0 -42
  95. data/lib/adwords_api/v201302/ad_group_criterion_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201302/ad_group_feed_service.rb +0 -38
  97. data/lib/adwords_api/v201302/ad_group_feed_service_registry.rb +0 -47
  98. data/lib/adwords_api/v201302/ad_group_service.rb +0 -42
  99. data/lib/adwords_api/v201302/ad_group_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201302/ad_param_service.rb +0 -38
  101. data/lib/adwords_api/v201302/ad_param_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201302/alert_service.rb +0 -34
  103. data/lib/adwords_api/v201302/alert_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201302/budget_order_service.rb +0 -42
  105. data/lib/adwords_api/v201302/budget_order_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201302/budget_service.rb +0 -38
  107. data/lib/adwords_api/v201302/budget_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201302/campaign_ad_extension_service.rb +0 -38
  109. data/lib/adwords_api/v201302/campaign_ad_extension_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201302/campaign_criterion_service.rb +0 -42
  111. data/lib/adwords_api/v201302/campaign_criterion_service_registry.rb +0 -46
  112. data/lib/adwords_api/v201302/campaign_feed_service.rb +0 -38
  113. data/lib/adwords_api/v201302/campaign_feed_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201302/campaign_service.rb +0 -42
  115. data/lib/adwords_api/v201302/campaign_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201302/campaign_shared_set_service.rb +0 -38
  117. data/lib/adwords_api/v201302/campaign_shared_set_service_registry.rb +0 -47
  118. data/lib/adwords_api/v201302/constant_data_service.rb +0 -62
  119. data/lib/adwords_api/v201302/constant_data_service_registry.rb +0 -46
  120. data/lib/adwords_api/v201302/conversion_tracker_service.rb +0 -38
  121. data/lib/adwords_api/v201302/conversion_tracker_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201302/customer_service.rb +0 -34
  123. data/lib/adwords_api/v201302/customer_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201302/customer_sync_service.rb +0 -34
  125. data/lib/adwords_api/v201302/customer_sync_service_registry.rb +0 -47
  126. data/lib/adwords_api/v201302/data_service.rb +0 -38
  127. data/lib/adwords_api/v201302/data_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201302/experiment_service.rb +0 -38
  129. data/lib/adwords_api/v201302/experiment_service_registry.rb +0 -46
  130. data/lib/adwords_api/v201302/feed_item_service.rb +0 -38
  131. data/lib/adwords_api/v201302/feed_item_service_registry.rb +0 -46
  132. data/lib/adwords_api/v201302/feed_mapping_service.rb +0 -38
  133. data/lib/adwords_api/v201302/feed_mapping_service_registry.rb +0 -46
  134. data/lib/adwords_api/v201302/feed_service.rb +0 -38
  135. data/lib/adwords_api/v201302/feed_service_registry.rb +0 -46
  136. data/lib/adwords_api/v201302/geo_location_service.rb +0 -34
  137. data/lib/adwords_api/v201302/geo_location_service_registry.rb +0 -46
  138. data/lib/adwords_api/v201302/location_criterion_service.rb +0 -34
  139. data/lib/adwords_api/v201302/location_criterion_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201302/managed_customer_service.rb +0 -50
  141. data/lib/adwords_api/v201302/managed_customer_service_registry.rb +0 -46
  142. data/lib/adwords_api/v201302/media_service.rb +0 -38
  143. data/lib/adwords_api/v201302/media_service_registry.rb +0 -46
  144. data/lib/adwords_api/v201302/mutate_job_service.rb +0 -42
  145. data/lib/adwords_api/v201302/mutate_job_service_registry.rb +0 -46
  146. data/lib/adwords_api/v201302/report_definition_service.rb +0 -34
  147. data/lib/adwords_api/v201302/report_definition_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201302/shared_criterion_service.rb +0 -38
  149. data/lib/adwords_api/v201302/shared_criterion_service_registry.rb +0 -47
  150. data/lib/adwords_api/v201302/shared_set_service.rb +0 -38
  151. data/lib/adwords_api/v201302/shared_set_service_registry.rb +0 -47
  152. data/lib/adwords_api/v201302/targeting_idea_service.rb +0 -38
  153. data/lib/adwords_api/v201302/targeting_idea_service_registry.rb +0 -46
  154. data/lib/adwords_api/v201302/traffic_estimator_service.rb +0 -34
  155. data/lib/adwords_api/v201302/traffic_estimator_service_registry.rb +0 -46
  156. data/lib/adwords_api/v201302/user_list_service.rb +0 -38
  157. data/lib/adwords_api/v201302/user_list_service_registry.rb +0 -46
  158. data/lib/adwords_api/v201302/video_ad_service.rb +0 -38
  159. data/lib/adwords_api/v201302/video_ad_service_registry.rb +0 -46
  160. data/lib/adwords_api/v201302/video_campaign_criterion_service.rb +0 -38
  161. data/lib/adwords_api/v201302/video_campaign_criterion_service_registry.rb +0 -47
  162. data/lib/adwords_api/v201302/video_campaign_service.rb +0 -38
  163. data/lib/adwords_api/v201302/video_campaign_service_registry.rb +0 -46
  164. data/lib/adwords_api/v201302/video_service.rb +0 -42
  165. data/lib/adwords_api/v201302/video_service_registry.rb +0 -46
  166. data/lib/adwords_api/v201302/video_targeting_group_criterion_service.rb +0 -38
  167. data/lib/adwords_api/v201302/video_targeting_group_criterion_service_registry.rb +0 -46
  168. data/lib/adwords_api/v201302/video_targeting_group_service.rb +0 -38
  169. data/lib/adwords_api/v201302/video_targeting_group_service_registry.rb +0 -46
  170. data/test/examples/v201302/test_account_management.rb +0 -50
  171. data/test/examples/v201302/test_advanced_operations.rb +0 -81
  172. data/test/examples/v201302/test_basic_operations.rb +0 -177
  173. data/test/examples/v201302/test_campaign_management.rb +0 -132
  174. data/test/examples/v201302/test_error_handling.rb +0 -63
  175. data/test/examples/v201302/test_migration.rb +0 -49
  176. data/test/examples/v201302/test_misc.rb +0 -39
  177. data/test/examples/v201302/test_optimization.rb +0 -63
  178. data/test/examples/v201302/test_remarketing.rb +0 -39
  179. data/test/examples/v201302/test_reporting.rb +0 -84
  180. data/test/examples/v201302/test_targeting.rb +0 -68
  181. data/test/examples/v201302/utils.rb +0 -267
  182. data/test/suite_exampletests_v201302.rb +0 -37
  183. data/test/templates/v201302/basic_operations_get_campaigns.def +0 -114
  184. data/test/templates/v201302/misc_use_oauth2_jwt.def +0 -131
@@ -1,166 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.sgomes@gmail.com (Sérgio Gomes)
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 creates an experiment using a query percentage of 10, which
22
- # defines what fraction of auctions should go to the control split (90%) vs.
23
- # the experiment split (10%), then adds experimental bid changes for criteria
24
- # and ad groups. To get campaigns, run get_campaigns.rb. To get ad groups,
25
- # run get_ad_groups.rb. To get keywords, run get_keywords.rb.
26
- #
27
- # Tags: ExperimentService.mutate
28
-
29
- require 'adwords_api'
30
- require 'date'
31
-
32
- def add_experiment(campaign_id, ad_group_id, criterion_id)
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
- experiment_srv = adwords.service(:ExperimentService, API_VERSION)
42
- ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
43
- ad_group_criterion_srv =
44
- adwords.service(:AdGroupCriterionService, API_VERSION)
45
-
46
- # Prepare for adding experiment.
47
- operation = {
48
- :operator => 'ADD',
49
- :operand => {
50
- :campaign_id => campaign_id,
51
- :name => "Interplanetary Experiment #%d" % (Time.new.to_f * 1000).to_i,
52
- :query_percentage => 10,
53
- :start_date_time => Time.now.strftime('%Y%m%d %H%M%S'),
54
- # Optional fields:
55
- :status => 'ACTIVE',
56
- :end_date_time =>
57
- DateTime.parse((Date.today + 30).to_s).strftime('%Y%m%d %H%M%S')
58
- }
59
- }
60
-
61
- # Add experiment.
62
- response = experiment_srv.mutate([operation])
63
- experiment = response[:value].first
64
- puts "Experiment with name '%s' and ID %d was added." %
65
- [experiment[:name], experiment[:id]]
66
-
67
- experiment_id = experiment[:id]
68
-
69
- # Setup ad group for the experiment.
70
- ad_group = {
71
- :id => ad_group_id,
72
- # Set experiment data for the ad group.
73
- :experiment_data => {
74
- :experiment_id => experiment_id,
75
- :experiment_delta_status => 'MODIFIED',
76
- # Bid multiplier rule that will modify ad group bid for the experiment.
77
- :experiment_bid_multipliers => {
78
- :xsi_type => 'ManualCPCAdGroupExperimentBidMultipliers',
79
- :max_cpc_multiplier => {
80
- :multiplier => 1.5
81
- }
82
- }
83
- }
84
- }
85
-
86
- # Prepare for updating ad group.
87
- operation = {
88
- :operator => 'SET',
89
- :operand => ad_group
90
- }
91
-
92
- # Update ad group.
93
- response = ad_group_srv.mutate([operation])
94
- ad_group = response[:value].first
95
- puts "Ad group ID %d was updated for the experiment." % ad_group[:id]
96
-
97
- # Setup ad group criterion for the experiment.
98
- ad_group_criterion = {
99
- :xsi_type => 'BiddableAdGroupCriterion',
100
- :ad_group_id => ad_group_id,
101
- :criterion => {
102
- :id => criterion_id
103
- },
104
- # Set experiment data for the criterion.
105
- :experiment_data => {
106
- :xsi_type => 'BiddableAdGroupCriterionExperimentData',
107
- :experiment_id => experiment_id,
108
- :experiment_delta_status => 'MODIFIED',
109
- # Bid multiplier rule that will modify criterion bid for the experiment.
110
- :experiment_bid_multiplier => {
111
- :xsi_type => 'ManualCPCAdGroupCriterionExperimentBidMultiplier',
112
- :max_cpc_multiplier => {
113
- :multiplier => 1.5
114
- }
115
- }
116
- }
117
- }
118
-
119
- # Prepare for updating ad group criterion.
120
- operation = {
121
- :operator => 'SET',
122
- :operand => ad_group_criterion
123
- }
124
-
125
- # Update criterion.
126
- response = ad_group_criterion_srv.mutate([operation])
127
- criterion = response[:value].first
128
- puts "Criterion ID %d was successfully updated for the experiment." %
129
- [criterion[:criterion][:id]]
130
-
131
- end
132
-
133
- if __FILE__ == $0
134
- API_VERSION = :v201302
135
-
136
- begin
137
- # IDs of the required objects.
138
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
139
- ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
140
- criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
141
- add_experiment(campaign_id, ad_group_id, criterion_id)
142
-
143
- # Authorization error.
144
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
145
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
146
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
147
- "to retrieve and store OAuth2 tokens."
148
- puts "See this wiki page for more details:\n\n " +
149
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
150
-
151
- # HTTP errors.
152
- rescue AdsCommon::Errors::HttpError => e
153
- puts "HTTP Error: %s" % e
154
-
155
- # API errors.
156
- rescue AdwordsApi::Errors::ApiException => e
157
- puts "Message: %s" % e.message
158
- puts 'Errors:'
159
- e.errors.each_with_index do |error, index|
160
- puts "\tError [%d]:" % (index + 1)
161
- error.each do |field, value|
162
- puts "\t\t%s: %s" % [field, value]
163
- end
164
- end
165
- end
166
- end
@@ -1,158 +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 code sample illustrates how to add many keywords using asynchronous
22
- # requests and MutateJobService.
23
- #
24
- # Tags: MutateJobService.mutate, MutateJobService.get
25
- # Tags: MutateJobService.getResult
26
-
27
- require 'adwords_api'
28
-
29
- def add_keywords_in_bulk()
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
- mutate_job_srv = adwords.service(:MutateJobService, API_VERSION)
39
-
40
- ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
41
-
42
- # Create AdGroupCriterionOperations to add keywords.
43
- operations = (1..KEYWORD_NUMBER).map do |index|
44
- {:xsi_type => 'AdGroupCriterionOperation',
45
- :operator => 'ADD',
46
- :operand => {
47
- :xsi_type => 'BiddableAdGroupCriterion',
48
- :ad_group_id => ad_group_id,
49
- :criterion => {
50
- :xsi_type => 'Keyword',
51
- :match_type => 'BROAD',
52
- :text => "mars%d" % index}}}
53
- end
54
-
55
- # You can specify up to 3 job IDs that must successfully complete before
56
- # this job can be processed.
57
- policy = {:prerequisite_job_ids => []}
58
-
59
- # Call mutate to create a new job.
60
- response = mutate_job_srv.mutate(operations, policy)
61
-
62
- raise StandardError, 'Failed to submit a job; aborting.' unless response
63
-
64
- job_id = response[:id]
65
- puts "Job ID %d was successfully created." % job_id
66
-
67
- # Creating selector to retrive hob status and wait for it to complete.
68
- selector = {
69
- :xsi_type => 'BulkMutateJobSelector',
70
- :job_ids => [job_id]
71
- }
72
-
73
- status = nil
74
-
75
- # Poll for job status until it's finished.
76
- puts 'Retrieving job status...'
77
- RETRIES_COUNT.times do |retry_attempt|
78
- job_status_response = mutate_job_srv.get(selector)
79
- if job_status_response
80
- status = job_status_response.first[:status]
81
- case status
82
- when 'FAILED'
83
- raise StandardError, "Job failed with reason: '%s'" %
84
- job_status_response.first[:failure_reason]
85
- when 'COMPLETED'
86
- puts "[%d] Job finished with status '%s'" % [retry_attempt, status]
87
- break
88
- else
89
- puts "[%d] Current status is '%s', waiting %d seconds to retry..." %
90
- [retry_attempt, status, RETRY_INTERVAL]
91
- sleep(RETRY_INTERVAL)
92
- end
93
- else
94
- raise StandardError, 'Error retrieving job status; aborting.'
95
- end
96
- end
97
-
98
- if status == 'COMPLETED'
99
- # Get the job result. Here we re-use the same selector.
100
- result_response = mutate_job_srv.get_result(selector)
101
-
102
- if result_response and result_response[:simple_mutate_result]
103
- results = result_response[:simple_mutate_result][:results]
104
- if results
105
- results.each_with_index do |result, index|
106
- result_message = result.include?(:place_holder) ?
107
- 'FAILED' : 'SUCCEEDED'
108
- puts "Operation [%d] - %s" % [index, result_message]
109
- end
110
- end
111
- errors = result_response[:simple_mutate_result][:errors]
112
- if errors
113
- errors.each do |error|
114
- puts "Error, reason: '%s', trigger: '%s', field path: '%s'" %
115
- [error[:reason], error[:trigger], error[:field_path]]
116
- end
117
- end
118
- else
119
- raise StandardError, 'Error retrieving job results; aborting.'
120
- end
121
- else
122
- puts "Job failed to complete after %d retries." % RETRY_COUNT
123
- end
124
- end
125
-
126
- if __FILE__ == $0
127
- API_VERSION = :v201302
128
- RETRY_INTERVAL = 30
129
- RETRIES_COUNT = 30
130
- KEYWORD_NUMBER = 100
131
-
132
- begin
133
- add_keywords_in_bulk()
134
-
135
- # Authorization error.
136
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
137
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
138
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
139
- "to retrieve and store OAuth2 tokens."
140
- puts "See this wiki page for more details:\n\n " +
141
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
142
-
143
- # HTTP errors.
144
- rescue AdsCommon::Errors::HttpError => e
145
- puts "HTTP Error: %s" % e
146
-
147
- # API errors.
148
- rescue AdwordsApi::Errors::ApiException => e
149
- puts "Message: %s" % e.message
150
- puts 'Errors:'
151
- e.errors.each_with_index do |error, index|
152
- puts "\tError [%d]:" % (index + 1)
153
- error.each do |field, value|
154
- puts "\t\t%s: %s" % [field, value]
155
- end
156
- end
157
- end
158
- end
@@ -1,125 +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 create a location ad extension for an existing
22
- # campaign. To create a campaign, run add_campaign.rb.
23
- #
24
- # Tags: GeoLocationService.get, CampaignAdExtensionService.mutate
25
-
26
- require 'adwords_api'
27
-
28
- def add_location_extension(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_ad_ext_srv =
38
- adwords.service(:CampaignAdExtensionService, API_VERSION)
39
- geo_location_srv = adwords.service(:GeoLocationService, API_VERSION)
40
-
41
- selector = {
42
- :addresses => [
43
- {
44
- :street_address => '1600 Amphitheatre Parkway',
45
- :city_name => 'Mountain View',
46
- :province_code => 'CA',
47
- :postal_code => '94043',
48
- :country_code => 'US'
49
- },
50
- {
51
- :street_address => "38 Avenue de l'Opéra",
52
- :city_name => 'Paris',
53
- :postal_code => '75002',
54
- :country_code => 'FR'
55
- }
56
- ]
57
- }
58
-
59
- # Get the geo location info for the various addresses and build a list of
60
- # operations with that information.
61
- locations = geo_location_srv.get(selector)
62
- raise StandardError, 'Unable to retrieve geo locations.' if locations.nil?
63
-
64
- operations = locations.map do |location|
65
- {:operator => 'ADD',
66
- :operand => {
67
- :campaign_id => campaign_id,
68
- :status => 'ACTIVE',
69
- :ad_extension => {
70
- # The 'xsi_type' field allows you to specify the xsi:type of the
71
- # object being created. It's only necessary when you must provide an
72
- # explicit type that the client library can't infer.
73
- :xsi_type => 'LocationExtension',
74
- :address => location[:address],
75
- :geo_point => location[:geo_point],
76
- :encoded_location => location[:encoded_location],
77
- :source => 'ADWORDS_FRONTEND',
78
- # Optional fields:
79
- #:company_name => 'ACME Inc.',
80
- #:phone_number => '+1-650-253-0000'
81
- }
82
- }
83
- }
84
- end
85
-
86
- # Add location ad extensions.
87
- response = campaign_ad_ext_srv.mutate(operations)
88
- response[:value].each do |extension|
89
- puts "Location extension ID %d and status '%s' successfully added." %
90
- [extension[:ad_extension][:id], extension[:status]]
91
- end
92
- end
93
-
94
- if __FILE__ == $0
95
- API_VERSION = :v201302
96
-
97
- begin
98
- # ID of campaign to add location extension to.
99
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
100
- add_location_extension(campaign_id)
101
-
102
- # Authorization error.
103
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
104
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
105
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
106
- "to retrieve and store OAuth2 tokens."
107
- puts "See this wiki page for more details:\n\n " +
108
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
109
-
110
- # HTTP errors.
111
- rescue AdsCommon::Errors::HttpError => e
112
- puts "HTTP Error: %s" % e
113
-
114
- # API errors.
115
- rescue AdwordsApi::Errors::ApiException => e
116
- puts "Message: %s" % e.message
117
- puts 'Errors:'
118
- e.errors.each_with_index do |error, index|
119
- puts "\tError [%d]:" % (index + 1)
120
- error.each do |field, value|
121
- puts "\t\t%s: %s" % [field, value]
122
- end
123
- end
124
- end
125
- end