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,106 @@
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 gets a bulk mutate job and prints out its stats information.
21
+ # To add a bulk mutate job, run perform_bulk_mutate_job.rb.
22
+ #
23
+ # Tags: BulkMutateJobService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_all_bulk_mutate_jobs()
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
+ bulk_mutate_job_srv = adwords.service(:BulkMutateJobService, API_VERSION)
41
+
42
+ # Replace with valid values of your account.
43
+ bulk_mutate_job_id = "INSERT_BULK_MUTATE_JOB_ID_HERE"
44
+
45
+ # Get all the bulk mutate jobs.
46
+ selector = {
47
+ :include_stats => true,
48
+ :job_ids => [bulk_mutate_job_id]
49
+ }
50
+ jobs = bulk_mutate_job_srv.get(selector)
51
+
52
+ if jobs
53
+ jobs.each do |job|
54
+ puts "Bulk mutate job with id %d and status '%s' was found." %
55
+ [job[:id], job[:status]]
56
+
57
+ case job[:status]
58
+ when 'PENDING'
59
+ puts " Total parts: %d, parts received: %d." %
60
+ [job[:num_request_parts], job[:num_request_parts_received]]
61
+ when 'PROCESSING'
62
+ if job[:stats]
63
+ puts " Percent complete: %d." % job[:stats][:progress_percent]
64
+ end
65
+ when 'COMPLETED'
66
+ if job[:stats]
67
+ puts " Total operations: %d, failed: %d, unprocessed %d." %
68
+ [job[:stats][:num_operations],
69
+ job[:stats][:num_failed_operations],
70
+ job[:stats][:num_unprocessed_operations]]
71
+ end
72
+ end
73
+ end
74
+ else
75
+ puts "No bulk mutate jobs were found."
76
+ end
77
+ end
78
+
79
+ if __FILE__ == $0
80
+ begin
81
+ get_all_bulk_mutate_jobs()
82
+
83
+ # Connection error. Likely transitory.
84
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
85
+ puts 'Connection Error: %s' % e
86
+ puts 'Source: %s' % e.backtrace.first
87
+
88
+ # API Error.
89
+ rescue AdwordsApi::Errors::ApiException => e
90
+ puts 'API Exception caught.'
91
+ puts 'Message: %s' % e.message
92
+ puts 'Code: %d' % e.code if e.code
93
+ puts 'Trigger: %s' % e.trigger if e.trigger
94
+ puts 'Errors:'
95
+ if e.errors
96
+ e.errors.each_with_index do |error, index|
97
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
98
+ error.each_pair do |field, value|
99
+ if field != :xsi_type
100
+ puts ' %s: %s' % [field, value]
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,103 @@
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 code example illustrates how to retrieve campaign alerts for a user.
21
+ # The alerts are restricted to a maximum of 10 entries.
22
+ #
23
+ # Tags: AlertService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_campaign_alerts()
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
+ alert_srv = adwords.service(:AlertService, API_VERSION)
41
+
42
+ # Create the selector.
43
+ selector = {
44
+ :query => {
45
+ :filter_spec => 'ALL',
46
+ :client_spec => 'ALL',
47
+ :trigger_time_spec => 'ALL_TIME',
48
+ :severities => ['GREEN', 'YELLOW', 'RED'],
49
+ :types => ['CAMPAIGN_ENDING', 'CAMPAIGN_ENDED']
50
+ },
51
+ :paging => {
52
+ :start_index => 0,
53
+ :number_results => 10
54
+ }
55
+ }
56
+
57
+ # Get alerts.
58
+ response = alert_srv.get(selector)
59
+
60
+ if response and response[:entries]
61
+ alerts = response[:entries]
62
+ alerts.each_with_index do |alert, index|
63
+ puts "{index}) Customer Id is " +
64
+ "#{AdwordsApi::Utils.format_id(alert[:client_customer_id])}, " +
65
+ "alert type is '#{alert[:alert_type]}', severity is " +
66
+ "#{alert[:alert_severity]}."
67
+ alert[:details].each do |detail|
68
+ puts " - triggered at #{detail[:trigger_time]}"
69
+ end
70
+ end
71
+ else
72
+ puts "No alerts were found."
73
+ end
74
+ end
75
+
76
+ if __FILE__ == $0
77
+ begin
78
+ get_campaign_alerts()
79
+
80
+ # Connection error. Likely transitory.
81
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
82
+ puts 'Connection Error: %s' % e
83
+ puts 'Source: %s' % e.backtrace.first
84
+
85
+ # API Error.
86
+ rescue AdwordsApi::Errors::ApiException => e
87
+ puts 'API Exception caught.'
88
+ puts 'Message: %s' % e.message
89
+ puts 'Code: %d' % e.code if e.code
90
+ puts 'Trigger: %s' % e.trigger if e.trigger
91
+ puts 'Errors:'
92
+ if e.errors
93
+ e.errors.each_with_index do |error, index|
94
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
95
+ error.each_pair do |field, value|
96
+ if field != :xsi_type
97
+ puts ' %s: %s' % [field, value]
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
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 find a client customer ID for a client email.
21
+ # We recommend to use this script as a one off to convert your identifiers to
22
+ # IDs and store them for future use.
23
+ #
24
+ # Tags: InfoService.get
25
+
26
+ require 'rubygems'
27
+ require 'adwords_api'
28
+ require 'adwords_api/utils'
29
+
30
+ API_VERSION = :v201109
31
+
32
+ def get_client_customer_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
+ info_srv = adwords.service(:InfoService, API_VERSION)
42
+
43
+ # Email address to find ID for.
44
+ client_email = 'INSERT_EMAIL_ADDRESS_HERE'
45
+
46
+ today = Time.new.strftime('%Y%m%d')
47
+
48
+ selector = {
49
+ :client_emails => [client_email],
50
+ :api_usage_type => 'UNIT_COUNT_FOR_CLIENTS',
51
+ :include_sub_accounts => true,
52
+ :date_range => {:min => today, :max => today}
53
+ }
54
+
55
+ # Get the information for client email address.
56
+ info = adwords.use_mcc() {info_srv.get(selector)}
57
+
58
+ if info and info[:api_usage_records]
59
+ api_usage_records = info[:api_usage_records]
60
+ api_usage_records.each do |record|
61
+ puts "Found record with client email '%s' and ID %s." %
62
+ [record[:client_email],
63
+ AdwordsApi::Utils.format_id(record[:client_customer_id])]
64
+ end
65
+ end
66
+ end
67
+
68
+ if __FILE__ == $0
69
+ begin
70
+ get_client_customer_id()
71
+
72
+ # HTTP errors.
73
+ rescue AdsCommon::Errors::HttpError => e
74
+ puts "HTTP Error: %s" % e
75
+
76
+ # API errors.
77
+ rescue AdwordsApi::Errors::ApiException => e
78
+ puts "Message: %s" % e.message
79
+ puts 'Errors:'
80
+ e.errors.each_with_index do |error, index|
81
+ puts "\tError [%d]:" % (index + 1)
82
+ error.each do |field, value|
83
+ puts "\t\t%s: %s" % [field, value]
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,102 @@
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 gets a bid landscapes for a criterion. To get criteria, run
21
+ # get_all_ad_group_criteria.rb.
22
+ #
23
+ # Tags: DataService.getCriterionBidLandscape
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_criterion_bid_landscapes()
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
+ data_srv = adwords.service(:DataService, API_VERSION)
41
+
42
+ ad_group_id = 'INSERT_ADGROUP_ID_HERE'.to_i
43
+ criterion_id = 'INSERT_CRITERION_ID_HERE'.to_i
44
+
45
+ # Get criterion bid landscape.
46
+ selector = {
47
+ :fields => ["AdGroupId", "CriterionId", "StartDate", "EndDate", "Bid",
48
+ "LocalClicks", "LocalCost", "MarginalCpc", "LocalImpressions"],
49
+ :predicates => [
50
+ {:field => 'AdGroupId', :operator => 'IN', :values => [ad_group_id]},
51
+ {:field => 'CriterionId', :operator => 'IN', :values => [criterion_id]},
52
+ ]
53
+ }
54
+ page = data_srv.get_criterion_bid_landscape(selector)
55
+ if page and page[:entries]
56
+ puts "#{page[:entries].length} bid landscape(s) retrieved."
57
+ page[:entries].each do |bid_landscape|
58
+ puts "Retrieved criterion bid landscape with ad group id " +
59
+ "'#{bid_landscape[:ad_group_id]}', criterion id " +
60
+ "'#{bid_landscape[:criterion_id]}', start date " +
61
+ "'#{bid_landscape[:start_date]}', end date "+
62
+ "'#{bid_landscape[:end_date]}', with landscape points:"
63
+ bid_landscape[:landscape_points].each do |point|
64
+ puts " #{point[:bid][:micro_amount]} => clicks: #{point.clicks}, " +
65
+ "cost: #{point[:cost][:micro_amount]}, marginalCpc: " +
66
+ "#{point[:marginal_cpc][:micro_amount]}, impressions: " +
67
+ "#{point[:impressions]}"
68
+ end
69
+ end
70
+ else
71
+ puts "No bid landscapes retrieved."
72
+ end
73
+ end
74
+
75
+ if __FILE__ == $0
76
+ begin
77
+ get_criterion_bid_landscapes()
78
+
79
+ # Connection error. Likely transitory.
80
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
81
+ puts 'Connection Error: %s' % e
82
+ puts 'Source: %s' % e.backtrace.first
83
+
84
+ # API Error.
85
+ rescue AdwordsApi::Errors::ApiException => e
86
+ puts 'API Exception caught.'
87
+ puts 'Message: %s' % e.message
88
+ puts 'Code: %d' % e.code if e.code
89
+ puts 'Trigger: %s' % e.trigger if e.trigger
90
+ puts 'Errors:'
91
+ if e.errors
92
+ e.errors.each_with_index do |error, index|
93
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
94
+ error.each_pair do |field, value|
95
+ if field != :xsi_type
96
+ puts ' %s: %s' % [field, value]
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,108 @@
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 retrieve geo location information for
21
+ # addresses.
22
+ #
23
+ # Tags: GeoLocationService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_geo_location_info()
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
+ geo_location_srv = adwords.service(:GeoLocationService, API_VERSION)
41
+
42
+ selector = {
43
+ :addresses => [
44
+ {
45
+ :street_address => '1600 Amphitheatre Parkway',
46
+ :city_name => 'Mountain View',
47
+ :province_code => 'US-CA',
48
+ :province_name => 'California',
49
+ :postal_code => '94043',
50
+ :country_code => 'US'
51
+ },
52
+ {
53
+ :street_address => '76 Ninth Avenue',
54
+ :city_name => 'New York',
55
+ :province_code => 'US-NY',
56
+ :province_name => 'New York',
57
+ :postal_code => '10011',
58
+ :country_code => 'US'
59
+ },
60
+ {
61
+ :street_address => '五四大街1号, Beijing东城区',
62
+ :country_code => 'CN'
63
+ }
64
+ ]
65
+ }
66
+
67
+ # Get the geo location info for the various addresses.
68
+ locations = geo_location_srv.get(selector)
69
+
70
+ if locations
71
+ locations.each do |location|
72
+ puts "Address \"#{location[:address][:street_address]}\" has latitude " +
73
+ "#{location[:geo_point][:latitude_in_micro_degrees]} and " +
74
+ "longitude #{location[:geo_point][:longitude_in_micro_degrees]}."
75
+ end
76
+ else
77
+ puts "No geo locations were returned."
78
+ end
79
+ end
80
+
81
+ if __FILE__ == $0
82
+ begin
83
+ get_geo_location_info()
84
+
85
+ # Connection error. Likely transitory.
86
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
87
+ puts 'Connection Error: %s' % e
88
+ puts 'Source: %s' % e.backtrace.first
89
+
90
+ # API Error.
91
+ rescue AdwordsApi::Errors::ApiException => e
92
+ puts 'API Exception caught.'
93
+ puts 'Message: %s' % e.message
94
+ puts 'Code: %d' % e.code if e.code
95
+ puts 'Trigger: %s' % e.trigger if e.trigger
96
+ puts 'Errors:'
97
+ if e.errors
98
+ e.errors.each_with_index do |error, index|
99
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
100
+ error.each_pair do |field, value|
101
+ if field != :xsi_type
102
+ puts ' %s: %s' % [field, value]
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end