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,76 @@
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 and downloads a report from a report definition. To get a
21
+ # report definition, run add_keywords_performance_report_definition.rb.
22
+
23
+ require 'rubygems'
24
+ gem 'google-adwords-api'
25
+ require 'adwords_api'
26
+
27
+ API_VERSION = :v201109
28
+
29
+ def download_report()
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
+ report_def_srv = adwords.service(:ReportDefinitionService, API_VERSION)
39
+
40
+ report_definition_id = 'INSERT_REPORT_DEFINITION_ID'.to_i
41
+ file_name = 'INSERT_OUTPUT_FILE_NAME_HERE'
42
+
43
+ # Download report, using "download_report_as_file" extension method.
44
+ report_def_srv.download_report_as_file(report_definition_id, file_name)
45
+ puts 'Report with definition id %d was downloaded to \'%s\'.' %
46
+ [report_definition_id, file_name]
47
+ end
48
+
49
+ if __FILE__ == $0
50
+ begin
51
+ download_report()
52
+
53
+ # Connection error. Likely transitory.
54
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
55
+ puts 'Connection Error: %s' % e
56
+ puts 'Source: %s' % e.backtrace.first
57
+
58
+ # API Error.
59
+ rescue AdwordsApi::Errors::ApiException => e
60
+ puts 'API Exception caught.'
61
+ puts 'Message: %s' % e.message
62
+ puts 'Code: %d' % e.code if e.code
63
+ puts 'Trigger: %s' % e.trigger if e.trigger
64
+ puts 'Errors:'
65
+ if e.errors
66
+ e.errors.each_with_index do |error, index|
67
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
68
+ error.each_pair do |field, value|
69
+ if field != :xsi_type
70
+ puts ' %s: %s' % [field, value]
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ 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 example gets bid landscapes for an ad group. To get ad groups,
21
+ # run get_all_ad_groups.rb.
22
+ #
23
+ # Tags: DataService.getAdGroupBidLandscape
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_ad_group_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 bid landscape for ad group.
46
+ selector = {
47
+ :fields => ["AdGroupId", "LandscapeType", "LandscapeCurrent", "StartDate",
48
+ "EndDate", "Bid", "LocalClicks", "LocalCost", "MarginalCpc",
49
+ "LocalImpressions"],
50
+ :predicates => [
51
+ {:field => 'AdGroupId', :operator => 'IN', :values => [ad_group_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 "Found ad group bid landscape with ad group id " +
59
+ "'#{bid_landscape[:ad_group_id]}', type " +
60
+ "'#{bid_landscape[:type]}', current " +
61
+ "'#{bid_landscape[:landscape_current]}', start date " +
62
+ "'#{bid_landscape[:start_date]}', end date "+
63
+ "'#{bid_landscape[:end_date]}', with landscape points:"
64
+ bid_landscape[:landscape_points].each do |point|
65
+ puts " #{point[:bid][:micro_amount]} => clicks: #{point.clicks}, " +
66
+ "cost: #{point[:cost][:micro_amount]}, marginalCpc: " +
67
+ "#{point[:marginal_cpc][:micro_amount]}, impressions: " +
68
+ "#{point[:impressions]}"
69
+ end
70
+ end
71
+ else
72
+ puts "No ad group bid landscapes retrieved."
73
+ end
74
+ end
75
+
76
+ if __FILE__ == $0
77
+ begin
78
+ get_ad_group_bid_landscapes()
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,146 @@
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 all account changes between the two dates specified, for
21
+ # all campaigns.
22
+ #
23
+ # Tags: CustomerSyncService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+ require 'pp'
29
+
30
+ API_VERSION = :v201109
31
+
32
+ def get_all_account_changes()
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
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
42
+ customer_sync_srv = adwords.service(:CustomerSyncService, API_VERSION)
43
+
44
+ today_at_midnight = DateTime.parse(Date.today.to_s)
45
+ yesterday_at_midnight = DateTime.parse((Date.today - 1).to_s)
46
+ min_date_time = yesterday_at_midnight.strftime("%Y%m%d %H%M%S")
47
+ max_date_time = today_at_midnight.strftime("%Y%m%d %H%M%S")
48
+
49
+ # Get all the campaigns for this account.
50
+ selector = {
51
+ :fields => ['Id']
52
+ }
53
+ response = campaign_srv.get(selector)
54
+
55
+ campaign_ids = []
56
+
57
+ if response and response[:entries]
58
+ campaigns = response[:entries]
59
+ campaign_ids = campaigns.map { |campaign| campaign[:id] }
60
+ else
61
+ puts "No campaigns were found."
62
+ return
63
+ end
64
+
65
+ # Create selector for CustomerSyncService.
66
+ selector = {
67
+ :campaign_ids => campaign_ids,
68
+ :date_time_range => {
69
+ :min => min_date_time,
70
+ :max => max_date_time
71
+ }
72
+ }
73
+
74
+ # Get all account changes for campaigns.
75
+ campaign_changes = customer_sync_srv.get(selector)
76
+
77
+ # Display changes.
78
+ if campaign_changes
79
+ puts "Most recent change: #{campaign_changes[:last_change_timestamp]}"
80
+ campaign_changes[:changed_campaigns].each do |campaign|
81
+ puts "Campaign with id #{campaign[:campaign_id]} was changed:"
82
+ puts " Campaign changed status: #{campaign[:campaign_change_status]}"
83
+ if campaign[:campaign_change_status] != 'NEW'
84
+ puts " Added ad extensions: %s" %
85
+ campaign[:added_ad_extensions].pretty_inspect
86
+ puts " Added campaign criteria: %s" %
87
+ campaign[:added_campaign_criteria].pretty_inspect
88
+ puts " Added campaign targeting: %s" %
89
+ campaign[:campaign_targeting_changed].pretty_inspect
90
+ puts " Deleted ad extensions: %s" %
91
+ campaign[:deleted_ad_extensions].pretty_inspect
92
+ puts " Deleted campaign criteria: %s" %
93
+ campaign[:deleted_campaign_criteria].pretty_inspect
94
+
95
+ if campaign[:changed_ad_groups]
96
+ campaign[:changed_ad_groups].each do |ad_group|
97
+ puts " Ad group with id #{ad_group[:ad_group_id]} was changed:"
98
+ puts " Ad group changed status: " +
99
+ "#{ad_group[:ad_group_change_status]}"
100
+ if ad_group[:ad_group_change_status] != 'NEW'
101
+ puts " Ads changed: %s" % ad_group[:changed_ads].pretty_inspect
102
+ puts " Criteria changed: %s" %
103
+ ad_group[:changed_criteria].pretty_inspect
104
+ puts " Criteria deleted: %s" %
105
+ ad_group[:deleted_criteria].pretty_inspect
106
+ end
107
+ end
108
+ end
109
+ end
110
+ puts ''
111
+ end
112
+ else
113
+ puts "No account changes were found."
114
+ end
115
+
116
+
117
+ end
118
+
119
+ if __FILE__ == $0
120
+ begin
121
+ get_all_account_changes()
122
+
123
+ # Connection error. Likely transitory.
124
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
125
+ puts 'Connection Error: %s' % e
126
+ puts 'Source: %s' % e.backtrace.first
127
+
128
+ # API Error.
129
+ rescue AdwordsApi::Errors::ApiException => e
130
+ puts 'API Exception caught.'
131
+ puts 'Message: %s' % e.message
132
+ puts 'Code: %d' % e.code if e.code
133
+ puts 'Trigger: %s' % e.trigger if e.trigger
134
+ puts 'Errors:'
135
+ if e.errors
136
+ e.errors.each_with_index do |error, index|
137
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
138
+ error.each_pair do |field, value|
139
+ if field != :xsi_type
140
+ puts ' %s: %s' % [field, value]
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
@@ -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 illustrates how to retrieve all the active criteria for an ad
21
+ # group. To add criteria to an existing ad group, run add_ad_group_criteria.rb.
22
+ #
23
+ # Tags: AdGroupCriterionService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_all_active_ad_group_criteria()
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_criterion_srv =
41
+ adwords.service(:AdGroupCriterionService, API_VERSION)
42
+
43
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
44
+
45
+ # Get all the active criteria for this ad group
46
+ selector = {
47
+ :fields => ['Id'],
48
+ :ordering => [{
49
+ :field => 'AdGroupId',
50
+ :sort_order => 'ASCENDING'
51
+ }],
52
+ :predicates => [
53
+ {
54
+ :field => 'AdGroupId',
55
+ :operator => 'IN',
56
+ :values => [ad_group_id]
57
+ },
58
+ {
59
+ :field => 'Status',
60
+ :operator => 'IN',
61
+ :values => ['ACTIVE']
62
+ }
63
+ ]
64
+ }
65
+ response = ad_group_criterion_srv.get(selector)
66
+ if response and response[:entries]
67
+ ad_group_criteria = response[:entries]
68
+ puts "Ad group ##{ad_group_id} has #{ad_group_criteria.length} active " +
69
+ "criteria."
70
+ ad_group_criteria.each do |ad_group_criterion|
71
+ puts " Criterion id is #{ad_group_criterion[:criterion][:id]} and " +
72
+ "type is #{ad_group_criterion[:criterion][:xsi_type]}."
73
+ end
74
+ else
75
+ puts "No active criteria found for ad group ##{ad_group_id}."
76
+ end
77
+ end
78
+
79
+ if __FILE__ == $0
80
+ begin
81
+ get_all_active_ad_group_criteria()
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,98 @@
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 all the criteria for an ad group.
21
+ # To add criteria to an existing ad group, run add_ad_group_criteria.rb.
22
+ #
23
+ # Tags: AdGroupCriterionService.get
24
+
25
+ require 'rubygems'
26
+ gem 'google-adwords-api'
27
+ require 'adwords_api'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def get_all_ad_group_criteria()
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_criterion_srv =
41
+ adwords.service(:AdGroupCriterionService, API_VERSION)
42
+
43
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
44
+
45
+ # Get all the criteria for this ad group.
46
+ selector = {
47
+ :fields => ['Id'],
48
+ :ordering => [{
49
+ :field => 'AdGroupId',
50
+ :sort_order => 'ASCENDING'
51
+ }],
52
+ :predicates => [{
53
+ :field => 'AdGroupId',
54
+ :operator => 'IN',
55
+ :values => [ad_group_id]
56
+ }]
57
+ }
58
+ response = ad_group_criterion_srv.get(selector)
59
+ if response and response[:entries]
60
+ ad_group_criteria = response[:entries]
61
+ puts "Ad group ##{ad_group_id} has #{ad_group_criteria.length} criteria."
62
+ ad_group_criteria.each do |ad_group_criterion|
63
+ puts " Criterion id is #{ad_group_criterion[:criterion][:id]} and " +
64
+ "type is #{ad_group_criterion[:criterion][:xsi_type]}."
65
+ end
66
+ else
67
+ puts "No criteria found for ad group ##{ad_group_id}."
68
+ end
69
+ end
70
+
71
+ if __FILE__ == $0
72
+ begin
73
+ get_all_ad_group_criteria()
74
+
75
+ # Connection error. Likely transitory.
76
+ rescue Errno::ECONNRESET, SOAP::HTTPStreamError, SocketError => e
77
+ puts 'Connection Error: %s' % e
78
+ puts 'Source: %s' % e.backtrace.first
79
+
80
+ # API Error.
81
+ rescue AdwordsApi::Errors::ApiException => e
82
+ puts 'API Exception caught.'
83
+ puts 'Message: %s' % e.message
84
+ puts 'Code: %d' % e.code if e.code
85
+ puts 'Trigger: %s' % e.trigger if e.trigger
86
+ puts 'Errors:'
87
+ if e.errors
88
+ e.errors.each_with_index do |error, index|
89
+ puts ' %d. Error type is %s. Fields:' % [index + 1, error[:xsi_type]]
90
+ error.each_pair do |field, value|
91
+ if field != :xsi_type
92
+ puts ' %s: %s' % [field, value]
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end