google-adx-buyer-api 0.2.0 → 0.4.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 (177) hide show
  1. data/ChangeLog +7 -0
  2. data/README +43 -41
  3. data/Rakefile +3 -3
  4. data/examples/v201003/add_ad_group.rb +5 -5
  5. data/examples/v201003/add_ad_group_criteria.rb +5 -5
  6. data/examples/v201003/add_ads.rb +5 -5
  7. data/examples/v201003/add_campaign.rb +5 -5
  8. data/examples/v201003/add_negative_campaign_criterion.rb +5 -5
  9. data/examples/v201003/add_placement_performance_report_definition.rb +5 -5
  10. data/examples/v201003/check_campaigns.rb +5 -5
  11. data/examples/v201003/delete_ad.rb +5 -5
  12. data/examples/v201003/delete_ad_group.rb +5 -5
  13. data/examples/v201003/delete_ad_group_criterion.rb +5 -5
  14. data/examples/v201003/delete_campaign.rb +5 -5
  15. data/examples/v201003/download_report.rb +5 -0
  16. data/examples/v201003/get_all_active_ad_group_criteria.rb +5 -5
  17. data/examples/v201003/get_all_ad_group_criteria.rb +5 -5
  18. data/examples/v201003/get_all_ad_groups.rb +5 -5
  19. data/examples/v201003/get_all_ads.rb +5 -5
  20. data/examples/v201003/get_all_campaign_targets.rb +5 -5
  21. data/examples/v201003/get_all_campaigns.rb +5 -5
  22. data/examples/v201003/get_all_disapproved_ads.rb +5 -5
  23. data/examples/v201003/get_all_images.rb +5 -5
  24. data/examples/v201003/get_all_paused_campaigns.rb +5 -5
  25. data/examples/v201003/get_all_report_definitions.rb +5 -5
  26. data/examples/v201003/get_criterion_bid_landscape.rb +5 -5
  27. data/examples/v201003/get_geo_location_info.rb +5 -5
  28. data/examples/v201003/get_related_placements.rb +5 -5
  29. data/examples/v201003/get_report_fields.rb +5 -5
  30. data/examples/v201003/perform_bulk_mutate_job.rb +5 -5
  31. data/examples/v201003/set_campaign_targets.rb +5 -5
  32. data/examples/v201003/update_ad.rb +5 -5
  33. data/examples/v201003/update_ad_group.rb +5 -5
  34. data/examples/v201003/update_ad_group_criterion.rb +5 -5
  35. data/examples/v201003/update_campaign.rb +5 -5
  36. data/examples/v201003/upload_image.rb +5 -5
  37. data/examples/v201008/add_ad_group.rb +5 -5
  38. data/examples/v201008/add_ad_group_criteria.rb +5 -5
  39. data/examples/v201008/add_ads.rb +5 -5
  40. data/examples/v201008/add_campaign.rb +5 -5
  41. data/examples/v201008/add_negative_campaign_criterion.rb +5 -5
  42. data/examples/v201008/add_placement_performance_report_definition.rb +5 -5
  43. data/examples/v201008/add_user_list.rb +5 -5
  44. data/examples/v201008/check_campaigns.rb +5 -5
  45. data/examples/v201008/delete_ad.rb +5 -5
  46. data/examples/v201008/delete_ad_group.rb +5 -5
  47. data/examples/v201008/delete_ad_group_criterion.rb +5 -5
  48. data/examples/v201008/delete_bulk_mutate_job.rb +5 -5
  49. data/examples/v201008/delete_campaign.rb +5 -5
  50. data/examples/v201008/delete_user_list.rb +5 -5
  51. data/examples/v201008/download_report.rb +5 -0
  52. data/examples/v201008/get_all_account_changes.rb +5 -5
  53. data/examples/v201008/get_all_active_ad_group_criteria.rb +5 -5
  54. data/examples/v201008/get_all_ad_group_criteria.rb +5 -5
  55. data/examples/v201008/get_all_ad_groups.rb +5 -5
  56. data/examples/v201008/get_all_ads.rb +5 -5
  57. data/examples/v201008/get_all_campaign_targets.rb +5 -5
  58. data/examples/v201008/get_all_campaigns.rb +5 -5
  59. data/examples/v201008/get_all_disapproved_ads.rb +5 -5
  60. data/examples/v201008/get_all_images.rb +5 -5
  61. data/examples/v201008/get_all_paused_campaigns.rb +5 -5
  62. data/examples/v201008/get_all_report_definitions.rb +5 -5
  63. data/examples/v201008/get_all_user_lists.rb +5 -5
  64. data/examples/v201008/get_bulk_mutate_job.rb +5 -5
  65. data/examples/v201008/get_campaign_alerts.rb +5 -5
  66. data/examples/v201008/get_criterion_bid_landscape.rb +5 -5
  67. data/examples/v201008/get_geo_location_info.rb +5 -5
  68. data/examples/v201008/get_related_placements.rb +5 -5
  69. data/examples/v201008/get_report_fields.rb +5 -5
  70. data/examples/v201008/perform_bulk_mutate_job.rb +5 -5
  71. data/examples/v201008/set_campaign_targets.rb +5 -5
  72. data/examples/v201008/update_ad.rb +5 -5
  73. data/examples/v201008/update_ad_group.rb +5 -5
  74. data/examples/v201008/update_ad_group_criterion.rb +5 -5
  75. data/examples/v201008/update_campaign.rb +5 -5
  76. data/examples/v201008/update_user_list.rb +5 -5
  77. data/examples/v201008/upload_image.rb +5 -5
  78. data/examples/v201101/add_ad_group.rb +5 -5
  79. data/examples/v201101/add_ad_group_criteria.rb +5 -5
  80. data/examples/v201101/add_ads.rb +5 -5
  81. data/examples/v201101/add_campaign.rb +5 -5
  82. data/examples/v201101/add_conversion.rb +5 -5
  83. data/examples/v201101/add_negative_campaign_criterion.rb +5 -5
  84. data/examples/v201101/add_placement_performance_report_definition.rb +5 -5
  85. data/examples/v201101/add_rtb_campaign.rb +5 -5
  86. data/examples/v201101/add_user_list.rb +5 -5
  87. data/examples/v201101/check_campaigns.rb +5 -5
  88. data/examples/v201101/delete_ad.rb +5 -5
  89. data/examples/v201101/delete_ad_group.rb +5 -5
  90. data/examples/v201101/delete_ad_group_criterion.rb +5 -5
  91. data/examples/v201101/delete_bulk_mutate_job.rb +5 -5
  92. data/examples/v201101/delete_campaign.rb +5 -5
  93. data/examples/v201101/delete_user_list.rb +5 -5
  94. data/examples/v201101/download_report.rb +5 -0
  95. data/examples/v201101/get_ad_group_bid_landscape.rb +5 -5
  96. data/examples/v201101/get_all_account_changes.rb +5 -5
  97. data/examples/v201101/get_all_active_ad_group_criteria.rb +5 -5
  98. data/examples/v201101/get_all_ad_group_criteria.rb +5 -5
  99. data/examples/v201101/get_all_ad_groups.rb +5 -5
  100. data/examples/v201101/get_all_ads.rb +5 -5
  101. data/examples/v201101/get_all_campaign_targets.rb +5 -5
  102. data/examples/v201101/get_all_campaigns.rb +5 -5
  103. data/examples/v201101/get_all_conversions.rb +5 -5
  104. data/examples/v201101/get_all_disapproved_ads.rb +5 -5
  105. data/examples/v201101/get_all_images.rb +5 -5
  106. data/examples/v201101/get_all_paused_campaigns.rb +5 -5
  107. data/examples/v201101/get_all_report_definitions.rb +5 -5
  108. data/examples/v201101/get_all_user_lists.rb +5 -5
  109. data/examples/v201101/get_bulk_mutate_job.rb +5 -5
  110. data/examples/v201101/get_campaign_alerts.rb +5 -5
  111. data/examples/v201101/get_criterion_bid_landscape.rb +5 -5
  112. data/examples/v201101/get_geo_location_info.rb +5 -5
  113. data/examples/v201101/get_related_placements.rb +5 -5
  114. data/examples/v201101/get_report_fields.rb +5 -5
  115. data/examples/v201101/perform_bulk_mutate_job.rb +5 -5
  116. data/examples/v201101/set_campaign_targets.rb +5 -5
  117. data/examples/v201101/update_ad.rb +5 -5
  118. data/examples/v201101/update_ad_group.rb +5 -5
  119. data/examples/v201101/update_ad_group_criterion.rb +5 -5
  120. data/examples/v201101/update_campaign.rb +5 -5
  121. data/examples/v201101/update_conversion.rb +5 -5
  122. data/examples/v201101/update_user_list.rb +5 -5
  123. data/examples/v201101/upload_image.rb +5 -5
  124. data/examples/v201109/add_ad_group.rb +98 -0
  125. data/examples/v201109/add_ad_group_criteria.rb +100 -0
  126. data/examples/v201109/add_ads.rb +110 -0
  127. data/examples/v201109/add_campaign.rb +108 -0
  128. data/examples/v201109/add_campaign_targeting_criteria.rb +102 -0
  129. data/examples/v201109/add_conversion.rb +97 -0
  130. data/examples/{v201008/get_all_experiments.rb → v201109/add_negative_campaign_criterion.rb} +32 -30
  131. data/examples/v201109/add_rtb_campaign.rb +113 -0
  132. data/examples/v201109/add_user_list.rb +122 -0
  133. data/examples/v201109/check_campaigns.rb +132 -0
  134. data/examples/v201109/delete_ad.rb +94 -0
  135. data/examples/{v201101/delete_experiment.rb → v201109/delete_ad_group.rb} +20 -21
  136. data/examples/v201109/delete_ad_group_criterion.rb +95 -0
  137. data/examples/v201109/delete_bulk_mutate_job.rb +96 -0
  138. data/examples/{v201008/delete_experiment.rb → v201109/delete_campaign.rb} +21 -21
  139. data/examples/{v201008/promote_experiment.rb → v201109/delete_user_list.rb} +21 -22
  140. data/examples/v201109/download_adhoc_report.rb +79 -0
  141. data/examples/v201109/download_report.rb +76 -0
  142. data/examples/v201109/get_ad_group_bid_landscape.rb +103 -0
  143. data/examples/v201109/get_all_account_changes.rb +146 -0
  144. data/examples/v201109/get_all_active_ad_group_criteria.rb +106 -0
  145. data/examples/v201109/get_all_ad_group_criteria.rb +98 -0
  146. data/examples/{v201101/get_all_experiments.rb → v201109/get_all_ad_groups.rb} +21 -25
  147. data/examples/v201109/get_all_ads.rb +99 -0
  148. data/examples/v201109/get_all_campaign_targets.rb +83 -0
  149. data/examples/v201109/get_all_campaigns.rb +86 -0
  150. data/examples/v201109/get_all_carriers.rb +72 -0
  151. data/examples/v201109/get_all_conversions.rb +88 -0
  152. data/examples/v201109/get_all_disapproved_ads.rb +102 -0
  153. data/examples/v201109/get_all_images.rb +90 -0
  154. data/examples/v201109/get_all_languages.rb +73 -0
  155. data/examples/v201109/get_all_paused_campaigns.rb +92 -0
  156. data/examples/v201109/get_all_report_definitions.rb +84 -0
  157. data/examples/v201109/get_all_user_lists.rb +87 -0
  158. data/examples/v201109/get_bulk_mutate_job.rb +106 -0
  159. data/examples/v201109/get_campaign_alerts.rb +103 -0
  160. data/examples/v201109/get_client_customer_id.rb +87 -0
  161. data/examples/v201109/get_criterion_bid_landscape.rb +102 -0
  162. data/examples/v201109/get_geo_location_info.rb +108 -0
  163. data/examples/v201109/get_location_criteria.rb +103 -0
  164. data/examples/v201109/get_related_placements.rb +114 -0
  165. data/examples/v201109/get_report_fields.rb +81 -0
  166. data/examples/v201109/perform_bulk_mutate_job.rb +222 -0
  167. data/examples/v201109/perform_mutate_job.rb +151 -0
  168. data/examples/{v201101/promote_experiment.rb → v201109/update_ad.rb} +29 -22
  169. data/examples/v201109/update_ad_group.rb +90 -0
  170. data/examples/v201109/update_ad_group_criterion.rb +108 -0
  171. data/examples/v201109/update_campaign.rb +93 -0
  172. data/examples/v201109/update_conversion.rb +96 -0
  173. data/examples/v201109/update_user_list.rb +91 -0
  174. data/examples/v201109/upload_image.rb +97 -0
  175. metadata +164 -114
  176. data/examples/v201008/add_experiment.rb +0 -162
  177. data/examples/v201101/add_experiment.rb +0 -162
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.sgomes@gmail.com (Sérgio Gomes)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example illustrates how to create a campaign with Real Time Bidding
21
+ # turned on.
22
+ #
23
+ # Tags: CampaignService.mutate
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def add_campaign()
32
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
+ # when called without parameters.
34
+ adwords = AdwordsApi::Api.new
35
+
36
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
37
+ # the configuration file or provide your own logger:
38
+ # adwords.logger = Logger.new('adwords_xml.log')
39
+
40
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
41
+
42
+ # Prepare for adding campaign.
43
+ operation = {
44
+ :operator => 'ADD',
45
+ :operand => {
46
+ :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
47
+ :status => 'PAUSED',
48
+ :bidding_strategy => {
49
+ # The 'xsi_type' field allows you to specify the xsi:type of the object
50
+ # being created. It's only necessary when you must provide an explicit
51
+ # type that the client library can't infer.
52
+ :xsi_type => 'ManualCPC'
53
+ },
54
+ :budget => {
55
+ :period => 'DAILY',
56
+ :amount => {
57
+ :micro_amount => 50000000
58
+ },
59
+ :delivery_method => 'STANDARD'
60
+ },
61
+ # Set the campaign network options to Search and Search Network.
62
+ :network_setting => {
63
+ :target_google_search => true,
64
+ :target_search_network => true,
65
+ :target_content_network => false,
66
+ :target_content_contextual => false
67
+ },
68
+ :settings => {
69
+ :xsi_type => 'RealTimeBiddingSetting',
70
+ :opt_in => 'true'
71
+ }
72
+ }
73
+ }
74
+
75
+ # Add campaign.
76
+ response = campaign_srv.mutate([operation])
77
+ if response and response[:value]
78
+ campaign = response[:value].first
79
+ puts 'Campaign with name "%s" and id %d was added.' %
80
+ [campaign[:name], campaign[:id]]
81
+ else
82
+ puts 'No campaigns were added.'
83
+ end
84
+ end
85
+
86
+ if __FILE__ == $0
87
+ begin
88
+ add_campaign()
89
+
90
+ # Connection error. Likely transitory.
91
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
92
+ puts 'Connection Error: %s' % e
93
+ puts 'Source: %s' % e.backtrace.first
94
+
95
+ # API Error.
96
+ rescue AdwordsApi::Errors::ApiException => e
97
+ puts 'API Exception caught.'
98
+ puts 'Message: %s' % e.message
99
+ puts 'Code: %d' % e.code if e.code
100
+ puts 'Trigger: %s' % e.trigger if e.trigger
101
+ puts 'Errors:'
102
+ if e.errors
103
+ e.errors.each_with_index do |error, index|
104
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
105
+ error.each_pair do |field, value|
106
+ if field != :xsi_type
107
+ puts ' %s: %s' % [field, value]
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.sgomes@gmail.com (Sérgio Gomes)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example illustrates how to create a user list and show its associated
21
+ # conversion tracker code snippet.
22
+ #
23
+ # Tags: UserListService.mutate, ConversionTrackerService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def add_user_list()
32
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
+ # when called without parameters.
34
+ adwords = AdwordsApi::Api.new
35
+
36
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
37
+ # the configuration file or provide your own logger:
38
+ # adwords.logger = Logger.new('adwords_xml.log')
39
+
40
+ user_list_srv = adwords.service(:UserListService, API_VERSION)
41
+ conv_tracker_srv = adwords.service(:ConversionTrackerService, API_VERSION)
42
+
43
+ # Prepare for adding remarketing user list.
44
+ name = 'Mars cruise customers #%s' % (Time.new.to_f * 1000).to_i
45
+ operation = {
46
+ :operator => 'ADD',
47
+ :operand => {
48
+ # The 'xsi_type' field allows you to specify the xsi:type of the object
49
+ # being created. It's only necessary when you must provide an explicit
50
+ # type that the client library can't infer.
51
+ :xsi_type => 'RemarketingUserList',
52
+ :name => name,
53
+ :description => 'A list of mars cruise customers in the last year',
54
+ :status => 'OPEN',
55
+ :membership_life_span => 365,
56
+ :conversion_types => [{:name => name}]
57
+ }
58
+ }
59
+
60
+ # Add user list.
61
+ response = user_list_srv.mutate([operation])
62
+ if response and response[:value]
63
+ user_list = response[:value].first
64
+
65
+ # Get conversion snippets.
66
+ if user_list and user_list[:conversion_types]
67
+ conversion_ids = user_list[:conversion_types].map {|type| type[:id]}
68
+ selector = {
69
+ # We're actually interested in the 'Snippet' field, which is returned
70
+ # automatically.
71
+ :fields => ['Id'],
72
+ :predicates => [
73
+ {:field => 'Id', :operator => 'IN', :values => conversion_ids}
74
+ ]
75
+ }
76
+ conv_tracker_response = conv_tracker_srv.get(selector)
77
+ if conv_tracker_response and conv_tracker_response[:entries]
78
+ conversions = conv_tracker_response[:entries]
79
+ end
80
+ end
81
+ puts 'User list with name "%s" and id %d was added.' %
82
+ [user_list[:name], user_list[:id]]
83
+ # Display user list associated conversion code snippets.
84
+ if conversions
85
+ conversions.each do |conversion|
86
+ puts "Conversion type code snipped associated to the list:\n%s\n" %
87
+ conversion[:snippet]
88
+ end
89
+ end
90
+ else
91
+ puts 'No user lists were added.'
92
+ end
93
+ end
94
+
95
+ if __FILE__ == $0
96
+ begin
97
+ add_user_list()
98
+
99
+ # Connection error. Likely transitory.
100
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
101
+ puts 'Connection Error: %s' % e
102
+ puts 'Source: %s' % e.backtrace.first
103
+
104
+ # API Error.
105
+ rescue AdwordsApi::Errors::ApiException => e
106
+ puts 'API Exception caught.'
107
+ puts 'Message: %s' % e.message
108
+ puts 'Code: %d' % e.code if e.code
109
+ puts 'Trigger: %s' % e.trigger if e.trigger
110
+ puts 'Errors:'
111
+ if e.errors
112
+ e.errors.each_with_index do |error, index|
113
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
114
+ error.each_pair do |field, value|
115
+ if field != :xsi_type
116
+ puts ' %s: %s' % [field, value]
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.sgomes@gmail.com (Sérgio Gomes)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example shows how to use the 'validate only' header. No objects will be
21
+ # created, but exceptions will still be thrown.
22
+ #
23
+ # Tags: CampaignService.mutate
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def check_campaigns()
32
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
+ # when called without parameters.
34
+ adwords = AdwordsApi::Api.new
35
+
36
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
37
+ # the configuration file or provide your own logger:
38
+ # adwords.logger = Logger.new('adwords_xml.log')
39
+
40
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
41
+
42
+ # Enable 'validate only'
43
+ adwords.validate_only = true
44
+
45
+ # Prepare for adding campaign.
46
+ operation = {
47
+ :operator => 'ADD',
48
+ :operand => {
49
+ :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
50
+ :status => 'PAUSED',
51
+ :bidding_strategy => {
52
+ # The 'xsi_type' field allows you to specify the xsi:type of the object
53
+ # being created. It's only necessary when you must provide an explicit
54
+ # type that the client library can't infer.
55
+ :xsi_type => 'ManualCPM'
56
+ },
57
+ :budget => {
58
+ :period => 'DAILY',
59
+ :amount => {
60
+ :micro_amount => 50000000
61
+ },
62
+ :delivery_method => 'STANDARD'
63
+ }
64
+ }
65
+ }
66
+
67
+ # Validate campaign add operation.
68
+ response = campaign_srv.mutate([operation])
69
+ if response and response[:value]
70
+ campaigns = response[:value]
71
+ campaigns.each do |campaign|
72
+ puts "Unexpected campaign creation! Name \"#{campaign[:name]}\", id " +
73
+ "#{campaign[:id]} and status is \"#{campaign[:status]}\"."
74
+ end
75
+ else
76
+ puts 'No campaigns created.'
77
+ end
78
+
79
+ # Provide an invalid bidding strategy that will cause an exception during
80
+ # validation.
81
+ operation = {
82
+ :operator => 'ADD',
83
+ :operand => {
84
+ :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
85
+ :status => 'PAUSED',
86
+ :bidding_strategy => nil,
87
+ :budget => {
88
+ :period => 'DAILY',
89
+ :amount => {
90
+ :micro_amount => 50000000
91
+ },
92
+ :delivery_method => 'STANDARD'
93
+ }
94
+ }
95
+ }
96
+
97
+ # Validate campaign add operation.
98
+ begin
99
+ response = campaign_srv.mutate([operation])
100
+ rescue AdwordsApi::Errors::ApiException => e
101
+ puts "Validation correctly failed: #{e.message}"
102
+ end
103
+ end
104
+
105
+ if __FILE__ == $0
106
+ begin
107
+ check_campaigns()
108
+
109
+ # Connection error. Likely transitory.
110
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
111
+ puts 'Connection Error: %s' % e
112
+ puts 'Source: %s' % e.backtrace.first
113
+
114
+ # API Error.
115
+ rescue AdwordsApi::Errors::ApiException => e
116
+ puts 'API Exception caught.'
117
+ puts 'Message: %s' % e.message
118
+ puts 'Code: %d' % e.code if e.code
119
+ puts 'Trigger: %s' % e.trigger if e.trigger
120
+ puts 'Errors:'
121
+ if e.errors
122
+ e.errors.each_with_index do |error, index|
123
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
124
+ error.each_pair do |field, value|
125
+ if field != :xsi_type
126
+ puts ' %s: %s' % [field, value]
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.sgomes@gmail.com (Sérgio Gomes)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example deletes an ad using the 'REMOVE' operator. To get ads,
21
+ # run get_all_ads.rb.
22
+ #
23
+ # Tags: AdGroupAdService.mutate
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def delete_ad()
32
+ # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
+ # when called without parameters.
34
+ adwords = AdwordsApi::Api.new
35
+
36
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
37
+ # the configuration file or provide your own logger:
38
+ # adwords.logger = Logger.new('adwords_xml.log')
39
+
40
+ ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
41
+
42
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
43
+ ad_id = 'INSERT_AD_ID_HERE'.to_i
44
+
45
+ # Prepare for deleting ad.
46
+ operation = {
47
+ :operator => 'REMOVE',
48
+ :operand => {
49
+ :ad_group_id => ad_group_id,
50
+ :ad => {
51
+ :xsi_type => 'Ad',
52
+ :id => ad_id
53
+ }
54
+ }
55
+ }
56
+
57
+ # Delete ad.
58
+ response = ad_group_ad_srv.mutate([operation])
59
+ if response and response[:value]
60
+ ad = response[:value].first
61
+ puts 'Ad id %d was successfully deleted.' % ad[:ad][:id]
62
+ else
63
+ puts 'No ads were deleted.'
64
+ end
65
+ end
66
+
67
+ if __FILE__ == $0
68
+ begin
69
+ delete_ad()
70
+
71
+ # Connection error. Likely transitory.
72
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
73
+ puts 'Connection Error: %s' % e
74
+ puts 'Source: %s' % e.backtrace.first
75
+
76
+ # API Error.
77
+ rescue AdwordsApi::Errors::ApiException => e
78
+ puts 'API Exception caught.'
79
+ puts 'Message: %s' % e.message
80
+ puts 'Code: %d' % e.code if e.code
81
+ puts 'Trigger: %s' % e.trigger if e.trigger
82
+ puts 'Errors:'
83
+ if e.errors
84
+ e.errors.each_with_index do |error, index|
85
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
86
+ error.each_pair do |field, value|
87
+ if field != :xsi_type
88
+ puts ' %s: %s' % [field, value]
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end