google-adwords-api 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +8 -8
  2. data/ChangeLog +3 -0
  3. data/examples/v201402/basic_operations/delete_ad_group.rb +1 -22
  4. data/examples/{v201309/basic_operations/delete_ad_group.rb → v201402/basic_operations/delete_ad_group.rb~} +2 -8
  5. data/examples/v201402/basic_operations/delete_campaign.rb +2 -23
  6. data/examples/{v201309/basic_operations/update_campaign.rb → v201402/basic_operations/delete_campaign.rb~} +13 -12
  7. data/examples/v201406/basic_operations/remove_ad_group.rb +1 -22
  8. data/examples/{v201309/basic_operations/update_ad_group.rb → v201406/basic_operations/remove_ad_group.rb~} +14 -13
  9. data/examples/v201406/basic_operations/remove_campaign.rb +4 -24
  10. data/examples/{v201309/basic_operations/delete_campaign.rb → v201406/basic_operations/remove_campaign.rb~} +11 -11
  11. data/lib/adwords_api.rb +5 -8
  12. data/lib/adwords_api/api_config.rb +0 -76
  13. data/lib/adwords_api/report_utils.rb +9 -0
  14. data/lib/adwords_api/report_utils.rb~ +283 -0
  15. data/lib/adwords_api/version.rb +1 -1
  16. data/lib/adwords_api/version.rb~ +26 -0
  17. data/test/adwords_api/test_adwords_api.rb +5 -21
  18. data/test/adwords_api/test_adwords_api.rb~ +114 -0
  19. data/test/adwords_api/test_api_config.rb +8 -8
  20. data/test/adwords_api/test_report_utils.rb +29 -1
  21. data/test/adwords_api/test_report_utils.rb~ +216 -0
  22. data/test/templates/{v201309 → v201402}/basic_operations_get_campaigns.def +7 -7
  23. data/test/templates/{v201309 → v201402}/misc_use_oauth2_jwt.def +7 -7
  24. data/test/templates/v201406/basic_operations_get_campaigns.def +114 -0
  25. data/test/templates/v201406/misc_use_oauth2_jwt.def +131 -0
  26. metadata +14 -139
  27. data/examples/v201309/account_management/create_account.rb +0 -95
  28. data/examples/v201309/account_management/get_account_alerts.rb +0 -122
  29. data/examples/v201309/account_management/get_account_changes.rb +0 -145
  30. data/examples/v201309/account_management/get_account_hierarchy.rb +0 -103
  31. data/examples/v201309/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  32. data/examples/v201309/advanced_operations/add_click_to_download_ad.rb +0 -137
  33. data/examples/v201309/advanced_operations/add_site_links.rb +0 -306
  34. data/examples/v201309/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -147
  35. data/examples/v201309/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -181
  36. data/examples/v201309/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  37. data/examples/v201309/advanced_operations/update_site_links.rb +0 -194
  38. data/examples/v201309/advanced_operations/upload_offline_conversions.rb +0 -117
  39. data/examples/v201309/advanced_operations/use_shared_bidding_strategy.rb +0 -163
  40. data/examples/v201309/basic_operations/add_ad_groups.rb +0 -143
  41. data/examples/v201309/basic_operations/add_campaigns.rb +0 -162
  42. data/examples/v201309/basic_operations/add_keywords.rb +0 -116
  43. data/examples/v201309/basic_operations/add_text_ads.rb +0 -113
  44. data/examples/v201309/basic_operations/delete_ad.rb +0 -93
  45. data/examples/v201309/basic_operations/delete_keyword.rb +0 -98
  46. data/examples/v201309/basic_operations/get_ad_groups.rb +0 -106
  47. data/examples/v201309/basic_operations/get_campaigns.rb +0 -101
  48. data/examples/v201309/basic_operations/get_campaigns_with_awql.rb +0 -93
  49. data/examples/v201309/basic_operations/get_keywords.rb +0 -112
  50. data/examples/v201309/basic_operations/get_text_ads.rb +0 -114
  51. data/examples/v201309/basic_operations/pause_ad.rb +0 -92
  52. data/examples/v201309/basic_operations/update_keyword.rb +0 -110
  53. data/examples/v201309/campaign_management/add_experiment.rb +0 -166
  54. data/examples/v201309/campaign_management/add_keywords_in_bulk.rb +0 -158
  55. data/examples/v201309/campaign_management/add_location_extension.rb +0 -125
  56. data/examples/v201309/campaign_management/get_all_disapproved_ads.rb +0 -101
  57. data/examples/v201309/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -93
  58. data/examples/v201309/campaign_management/promote_experiment.rb +0 -85
  59. data/examples/v201309/campaign_management/set_ad_parameters.rb +0 -122
  60. data/examples/v201309/campaign_management/set_criterion_bid_modifier.rb +0 -108
  61. data/examples/v201309/campaign_management/validate_text_ad.rb +0 -114
  62. data/examples/v201309/error_handling/handle_captcha_challenge.rb +0 -93
  63. data/examples/v201309/error_handling/handle_partial_failures.rb +0 -134
  64. data/examples/v201309/error_handling/handle_policy_violation_error.rb +0 -145
  65. data/examples/v201309/error_handling/handle_two_factor_authorization_error.rb +0 -88
  66. data/examples/v201309/misc/get_all_images_and_videos.rb +0 -108
  67. data/examples/v201309/misc/setup_oauth2.rb +0 -88
  68. data/examples/v201309/misc/upload_image.rb +0 -97
  69. data/examples/v201309/misc/use_oauth2_jwt.rb +0 -97
  70. data/examples/v201309/optimization/estimate_keyword_traffic.rb +0 -137
  71. data/examples/v201309/optimization/get_keyword_bid_simulations.rb +0 -100
  72. data/examples/v201309/optimization/get_keyword_ideas.rb +0 -130
  73. data/examples/v201309/optimization/get_placement_ideas.rb +0 -112
  74. data/examples/v201309/remarketing/add_audience.rb +0 -123
  75. data/examples/v201309/remarketing/add_conversion_tracker.rb +0 -104
  76. data/examples/v201309/reporting/download_criteria_report.rb +0 -87
  77. data/examples/v201309/reporting/download_criteria_report_with_awql.rb +0 -86
  78. data/examples/v201309/reporting/get_report_fields.rb +0 -79
  79. data/examples/v201309/reporting/parallel_report_download.rb +0 -171
  80. data/examples/v201309/targeting/add_campaign_targeting_criteria.rb +0 -123
  81. data/examples/v201309/targeting/add_demographic_targeting_criteria.rb +0 -116
  82. data/examples/v201309/targeting/get_campaign_targeting_criteria.rb +0 -110
  83. data/examples/v201309/targeting/get_targetable_languages_and_carriers.rb +0 -94
  84. data/examples/v201309/targeting/lookup_location.rb +0 -112
  85. data/lib/adwords_api/v201309/ad_group_ad_service.rb +0 -42
  86. data/lib/adwords_api/v201309/ad_group_ad_service_registry.rb +0 -46
  87. data/lib/adwords_api/v201309/ad_group_bid_modifier_service.rb +0 -38
  88. data/lib/adwords_api/v201309/ad_group_bid_modifier_service_registry.rb +0 -46
  89. data/lib/adwords_api/v201309/ad_group_criterion_service.rb +0 -42
  90. data/lib/adwords_api/v201309/ad_group_criterion_service_registry.rb +0 -46
  91. data/lib/adwords_api/v201309/ad_group_feed_service.rb +0 -38
  92. data/lib/adwords_api/v201309/ad_group_feed_service_registry.rb +0 -46
  93. data/lib/adwords_api/v201309/ad_group_service.rb +0 -42
  94. data/lib/adwords_api/v201309/ad_group_service_registry.rb +0 -46
  95. data/lib/adwords_api/v201309/ad_param_service.rb +0 -38
  96. data/lib/adwords_api/v201309/ad_param_service_registry.rb +0 -46
  97. data/lib/adwords_api/v201309/adwords_user_list_service.rb +0 -38
  98. data/lib/adwords_api/v201309/adwords_user_list_service_registry.rb +0 -46
  99. data/lib/adwords_api/v201309/alert_service.rb +0 -34
  100. data/lib/adwords_api/v201309/alert_service_registry.rb +0 -46
  101. data/lib/adwords_api/v201309/bidding_strategy_service.rb +0 -38
  102. data/lib/adwords_api/v201309/bidding_strategy_service_registry.rb +0 -46
  103. data/lib/adwords_api/v201309/budget_order_service.rb +0 -42
  104. data/lib/adwords_api/v201309/budget_order_service_registry.rb +0 -46
  105. data/lib/adwords_api/v201309/budget_service.rb +0 -38
  106. data/lib/adwords_api/v201309/budget_service_registry.rb +0 -46
  107. data/lib/adwords_api/v201309/campaign_ad_extension_service.rb +0 -38
  108. data/lib/adwords_api/v201309/campaign_ad_extension_service_registry.rb +0 -46
  109. data/lib/adwords_api/v201309/campaign_criterion_service.rb +0 -42
  110. data/lib/adwords_api/v201309/campaign_criterion_service_registry.rb +0 -46
  111. data/lib/adwords_api/v201309/campaign_feed_service.rb +0 -38
  112. data/lib/adwords_api/v201309/campaign_feed_service_registry.rb +0 -46
  113. data/lib/adwords_api/v201309/campaign_service.rb +0 -42
  114. data/lib/adwords_api/v201309/campaign_service_registry.rb +0 -46
  115. data/lib/adwords_api/v201309/campaign_shared_set_service.rb +0 -38
  116. data/lib/adwords_api/v201309/campaign_shared_set_service_registry.rb +0 -47
  117. data/lib/adwords_api/v201309/constant_data_service.rb +0 -62
  118. data/lib/adwords_api/v201309/constant_data_service_registry.rb +0 -46
  119. data/lib/adwords_api/v201309/conversion_tracker_service.rb +0 -38
  120. data/lib/adwords_api/v201309/conversion_tracker_service_registry.rb +0 -46
  121. data/lib/adwords_api/v201309/customer_service.rb +0 -34
  122. data/lib/adwords_api/v201309/customer_service_registry.rb +0 -46
  123. data/lib/adwords_api/v201309/customer_sync_service.rb +0 -34
  124. data/lib/adwords_api/v201309/customer_sync_service_registry.rb +0 -47
  125. data/lib/adwords_api/v201309/data_service.rb +0 -38
  126. data/lib/adwords_api/v201309/data_service_registry.rb +0 -46
  127. data/lib/adwords_api/v201309/experiment_service.rb +0 -38
  128. data/lib/adwords_api/v201309/experiment_service_registry.rb +0 -46
  129. data/lib/adwords_api/v201309/feed_item_service.rb +0 -38
  130. data/lib/adwords_api/v201309/feed_item_service_registry.rb +0 -46
  131. data/lib/adwords_api/v201309/feed_mapping_service.rb +0 -38
  132. data/lib/adwords_api/v201309/feed_mapping_service_registry.rb +0 -46
  133. data/lib/adwords_api/v201309/feed_service.rb +0 -38
  134. data/lib/adwords_api/v201309/feed_service_registry.rb +0 -46
  135. data/lib/adwords_api/v201309/geo_location_service.rb +0 -34
  136. data/lib/adwords_api/v201309/geo_location_service_registry.rb +0 -46
  137. data/lib/adwords_api/v201309/location_criterion_service.rb +0 -34
  138. data/lib/adwords_api/v201309/location_criterion_service_registry.rb +0 -46
  139. data/lib/adwords_api/v201309/managed_customer_service.rb +0 -50
  140. data/lib/adwords_api/v201309/managed_customer_service_registry.rb +0 -46
  141. data/lib/adwords_api/v201309/media_service.rb +0 -38
  142. data/lib/adwords_api/v201309/media_service_registry.rb +0 -46
  143. data/lib/adwords_api/v201309/mutate_job_service.rb +0 -42
  144. data/lib/adwords_api/v201309/mutate_job_service_registry.rb +0 -46
  145. data/lib/adwords_api/v201309/offline_conversion_feed_service.rb +0 -34
  146. data/lib/adwords_api/v201309/offline_conversion_feed_service_registry.rb +0 -46
  147. data/lib/adwords_api/v201309/report_definition_service.rb +0 -34
  148. data/lib/adwords_api/v201309/report_definition_service_registry.rb +0 -46
  149. data/lib/adwords_api/v201309/shared_criterion_service.rb +0 -38
  150. data/lib/adwords_api/v201309/shared_criterion_service_registry.rb +0 -47
  151. data/lib/adwords_api/v201309/shared_set_service.rb +0 -38
  152. data/lib/adwords_api/v201309/shared_set_service_registry.rb +0 -47
  153. data/lib/adwords_api/v201309/targeting_idea_service.rb +0 -38
  154. data/lib/adwords_api/v201309/targeting_idea_service_registry.rb +0 -46
  155. data/lib/adwords_api/v201309/traffic_estimator_service.rb +0 -34
  156. data/lib/adwords_api/v201309/traffic_estimator_service_registry.rb +0 -46
  157. data/test/bugs/test_issue_00000031.rb +0 -75
@@ -1,147 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example creates a shared list of negative broad match keywords, it then
22
- # attaches them to a campaign.
23
- #
24
- # Note: Shared sets is a Beta feature.
25
- #
26
- # Tags: SharedSetService.mutate, CampaignSharedSetService.mutate
27
-
28
- require 'adwords_api'
29
- require 'date'
30
-
31
- def create_and_attach_shared_keyword_set(campaign_id)
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
- shared_set_srv = adwords.service(:SharedSetService, API_VERSION)
41
- shared_criterion_srv = adwords.service(:SharedCriterionService, API_VERSION)
42
- campaign_shared_set_srv =
43
- adwords.service(:CampaignSharedSetService, API_VERSION)
44
-
45
- # Keywords to create a shared set of.
46
- keywords = ['mars cruise', 'mars hotels']
47
-
48
- # Create shared negative keyword set.
49
- shared_set = {
50
- :name => 'API Negative keyword list - %d' % (Time.new.to_f * 1000).to_i,
51
- :type => 'NEGATIVE_KEYWORDS'
52
- }
53
-
54
- # Add shared set.
55
- response = shared_set_srv.mutate([
56
- {:operator => 'ADD', :operand => shared_set}
57
- ])
58
-
59
- if response and response[:value]
60
- shared_set = response[:value].first
61
- shared_set_id = shared_set[:shared_set_id]
62
- puts "Shared set with ID %d and name '%s' was successfully added." %
63
- [shared_set_id, shared_set[:name]]
64
- else
65
- raise StandardError, 'No shared set was added'
66
- end
67
-
68
- # Add negative keywords to shared set.
69
- shared_criteria = keywords.map do |keyword|
70
- {
71
- :criterion => {
72
- :xsi_type => 'Keyword',
73
- :text => keyword,
74
- :match_type => 'BROAD'
75
- },
76
- :negative => true,
77
- :shared_set_id => shared_set_id
78
- }
79
- end
80
-
81
- operations = shared_criteria.map do |criterion|
82
- {:operator => 'ADD', :operand => criterion}
83
- end
84
-
85
- response = shared_criterion_srv.mutate(operations)
86
- if response and response[:value]
87
- response[:value].each do |shared_criterion|
88
- puts "Added shared criterion ID %d '%s' to shared set with ID %d." %
89
- [shared_criterion[:criterion][:id],
90
- shared_criterion[:criterion][:text],
91
- shared_criterion[:shared_set_id]]
92
- end
93
- else
94
- raise StandardError, 'No shared keyword was added'
95
- end
96
-
97
- # Attach the articles to the campaign.
98
- campaign_set = {
99
- :campaign_id => campaign_id,
100
- :shared_set_id => shared_set_id
101
- }
102
-
103
- response = campaign_shared_set_srv.mutate([
104
- {:operator => 'ADD', :operand => campaign_set}
105
- ])
106
- if response and response[:value]
107
- campaign_shared_set = response[:value].first
108
- puts 'Shared set ID %d was attached to campaign ID %d' %
109
- [campaign_shared_set[:shared_set_id], campaign_shared_set[:campaign_id]]
110
- else
111
- raise StandardError, 'No campaign shared set was added'
112
- end
113
- end
114
-
115
- if __FILE__ == $0
116
- API_VERSION = :v201309
117
-
118
- begin
119
- # Campaign ID to attach shared keyword set to.
120
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
121
-
122
- create_and_attach_shared_keyword_set(campaign_id)
123
-
124
- # Authorization error.
125
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
126
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
127
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
128
- "to retrieve and store OAuth2 tokens."
129
- puts "See this wiki page for more details:\n\n " +
130
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
131
-
132
- # HTTP errors.
133
- rescue AdsCommon::Errors::HttpError => e
134
- puts "HTTP Error: %s" % e
135
-
136
- # API errors.
137
- rescue AdwordsApi::Errors::ApiException => e
138
- puts "Message: %s" % e.message
139
- puts 'Errors:'
140
- e.errors.each_with_index do |error, index|
141
- puts "\tError [%d]:" % (index + 1)
142
- error.each do |field, value|
143
- puts "\t\t%s: %s" % [field, value]
144
- end
145
- end
146
- end
147
- end
@@ -1,181 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example demonstrates how to find shared sets, shared set criterions and
22
- # how to remove them.
23
- #
24
- # Note: Shared sets is a Beta feature.
25
- #
26
- # Tags: CampaignSharedSetService.get
27
- # Tags: SharedCriterionService.get, SharedCriterionService.mutate
28
-
29
- require 'adwords_api'
30
-
31
- def find_and_remove_criteria_from_shared_set(campaign_id)
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_shared_set_srv =
41
- adwords.service(:CampaignSharedSetService, API_VERSION)
42
- shared_criterion_srv = adwords.service(:SharedCriterionService, API_VERSION)
43
-
44
- shared_set_ids = []
45
- criterion_ids = []
46
-
47
- # First, retrieve all shared sets associated with the campaign.
48
-
49
- # Create selector for shared sets to:
50
- # - filter by campaign ID,
51
- # - filter by shared set type.
52
- selector = {
53
- :fields => ['SharedSetId', 'CampaignId', 'SharedSetName', 'SharedSetType',
54
- 'Status'],
55
- :predicates => [
56
- {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]},
57
- {:field => 'SharedSetType', :operator => 'IN', :values =>
58
- ['NEGATIVE_KEYWORDS', 'NEGATIVE_PLACEMENTS']}
59
- ],
60
- :paging => {
61
- :start_index => 0,
62
- :number_results => PAGE_SIZE
63
- }
64
- }
65
-
66
- # Set initial values.
67
- offset, page = 0, {}
68
-
69
- begin
70
- page = campaign_shared_set_srv.get(selector)
71
- if page[:entries]
72
- page[:entries].each do |shared_set|
73
- puts "Campaign shared set ID %d and name '%s'" %
74
- [shared_set[:shared_set_id], shared_set[:shared_set_name]]
75
- shared_set_ids << shared_set[:shared_set_id]
76
- end
77
- # Increment values to request the next page.
78
- offset += PAGE_SIZE
79
- selector[:paging][:start_index] = offset
80
- end
81
- end while page[:total_num_entries] > offset
82
-
83
- # Next, Retrieve criterion IDs for all found shared sets.
84
- selector = {
85
- :fields => ['SharedSetId', 'Id', 'KeywordText', 'KeywordMatchType',
86
- 'PlacementUrl'],
87
- :predicates => [
88
- {:field => 'SharedSetId', :operator => 'IN', :values => shared_set_ids}
89
- ],
90
- :paging => {
91
- :start_index => 0,
92
- :number_results => PAGE_SIZE
93
- }
94
- }
95
-
96
- # Set initial values.
97
- offset, page = 0, {}
98
-
99
- begin
100
- page = shared_criterion_srv.get(selector)
101
- if page[:entries]
102
- page[:entries].each do |shared_criterion|
103
- if shared_criterion[:criterion][:type] == 'KEYWORD'
104
- puts "Shared negative keyword with ID %d and text '%s' was found." %
105
- [shared_criterion[:criterion][:id],
106
- shared_criterion[:criterion][:text]]
107
- elsif shared_criterion[:criterion][:type] == 'PLACEMENT'
108
- puts "Shared negative placement with ID %d and url '%s' was found." %
109
- [shared_criterion[:criterion][:id],
110
- shared_criterion[:criterion][:url]]
111
- else
112
- puts 'Shared criterion with ID %d was found.' %
113
- [shared_criterion[:criterion][:id]]
114
- end
115
- criterion_ids << {
116
- :shared_set_id => shared_criterion[:shared_set_id],
117
- :criterion_id => shared_criterion[:criterion][:id]
118
- }
119
- end
120
- # Increment values to request the next page.
121
- offset += PAGE_SIZE
122
- selector[:paging][:start_index] = offset
123
- end
124
- end while page[:total_num_entries] > offset
125
-
126
- # Finally, remove the criteria.
127
- operations = criterion_ids.map do |criterion|
128
- {
129
- :operator => 'REMOVE',
130
- :operand => {
131
- :criterion => {:id => criterion[:criterion_id]},
132
- :shared_set_id => criterion[:shared_set_id]
133
- }
134
- }
135
- end
136
-
137
- response = shared_criterion_srv.mutate(operations)
138
- if response and response[:value]
139
- response[:value].each do |criterion|
140
- puts "Criterion ID %d was successfully removed from shared set ID %d." %
141
- [criterion[:criterion][:id], criterion[:shared_set_id]]
142
- end
143
- else
144
- puts 'No shared criteria were removed.'
145
- end
146
- end
147
-
148
- if __FILE__ == $0
149
- API_VERSION = :v201309
150
- PAGE_SIZE = 500
151
-
152
- begin
153
- # ID of a campaign to remove shared criteria from.
154
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
155
-
156
- find_and_remove_criteria_from_shared_set(campaign_id)
157
-
158
- # Authorization error.
159
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
160
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
161
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
162
- "to retrieve and store OAuth2 tokens."
163
- puts "See this wiki page for more details:\n\n " +
164
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
165
-
166
- # HTTP errors.
167
- rescue AdsCommon::Errors::HttpError => e
168
- puts "HTTP Error: %s" % e
169
-
170
- # API errors.
171
- rescue AdwordsApi::Errors::ApiException => e
172
- puts "Message: %s" % e.message
173
- puts 'Errors:'
174
- e.errors.each_with_index do |error, index|
175
- puts "\tError [%d]:" % (index + 1)
176
- error.each do |field, value|
177
- puts "\t\t%s: %s" % [field, value]
178
- end
179
- end
180
- end
181
- end
@@ -1,106 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example illustrates how to retrieve ad group level bid modifiers for a
22
- # campaign.
23
- #
24
- # Tags: AdGroupBidModifierService.get
25
-
26
- require 'adwords_api'
27
-
28
- def get_ad_group_bid_modifiers(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
- bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)
38
-
39
- # Get all ad group bid modifiers for the campaign.
40
- selector = {
41
- :fields => ['CampaignId', 'AdGroupId', 'Id', 'BidModifier'],
42
- :predicates => [
43
- {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]}
44
- ],
45
- :paging => {
46
- :start_index => 0,
47
- :number_results => PAGE_SIZE
48
- }
49
- }
50
-
51
- # Set initial values.
52
- offset, page = 0, {}
53
-
54
- begin
55
- page = bid_modifier_srv.get(selector)
56
- if page[:entries]
57
- page[:entries].each do |modifier|
58
- value = modifier[:bid_modifier] || 'unset'
59
- puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d has ad group ' +
60
- 'level modifier: %s') %
61
- [modifier[:campaign_id], modifier[:ad_group_id],
62
- modifier[:criterion][:id], value]
63
- end
64
- # Increment values to request the next page.
65
- offset += PAGE_SIZE
66
- selector[:paging][:start_index] = offset
67
- else
68
- puts 'No ad group level bid overrides returned.'
69
- end
70
- end while page[:total_num_entries] > offset
71
- end
72
-
73
- if __FILE__ == $0
74
- API_VERSION = :v201309
75
- PAGE_SIZE = 500
76
-
77
- begin
78
- # ID of a campaign to pull overrides for.
79
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
80
-
81
- get_ad_group_bid_modifiers(campaign_id)
82
-
83
- # Authorization error.
84
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
85
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
86
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
87
- "to retrieve and store OAuth2 tokens."
88
- puts "See this wiki page for more details:\n\n " +
89
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
90
-
91
- # HTTP errors.
92
- rescue AdsCommon::Errors::HttpError => e
93
- puts "HTTP Error: %s" % e
94
-
95
- # API errors.
96
- rescue AdwordsApi::Errors::ApiException => e
97
- puts "Message: %s" % e.message
98
- puts 'Errors:'
99
- e.errors.each_with_index do |error, index|
100
- puts "\tError [%d]:" % (index + 1)
101
- error.each do |field, value|
102
- puts "\t\t%s: %s" % [field, value]
103
- end
104
- end
105
- end
106
- end
@@ -1,194 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.mcloonan@gmail.com (Michael Cloonan)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example updates an existing sitelinks feed as follows:
22
- # * Adds FeedItemAttributes for line 1 and line 2 descriptions to the Feed
23
- # * Populates the new FeedItemAttributes on FeedItems in the Feed
24
- # * Replaces the Feed's existing FeedMapping with one that contains the new
25
- # set of FeedItemAttributes
26
- #
27
- # The end result of this is that any campaign or ad group whose CampaignFeed
28
- # or AdGroupFeed points to the Feed's ID will now serve line 1 and line 2
29
- # descriptions in its sitelinks.
30
- #
31
- # Tags: FeedItemService.mutate
32
- # Tags: FeedMappingService.mutate, FeedService.mutate
33
-
34
- require 'adwords_api'
35
-
36
- def update_site_links(feed_id, feed_item_descriptions)
37
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
38
- # when called without parameters.
39
- adwords = AdwordsApi::Api.new
40
-
41
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
42
- # the configuration file or provide your own logger:
43
- # adwords.logger = Logger.new('adwords_xml.log')
44
-
45
- feed_srv = adwords.service(:FeedService, API_VERSION)
46
- feed_item_srv = adwords.service(:FeedItemService, API_VERSION)
47
- feed_mapping_srv = adwords.service(:FeedMappingService, API_VERSION)
48
-
49
- feed_selector = {
50
- :fields => ['Id', 'Attributes'],
51
- :predicates => [
52
- {:field => 'Id', :operator => 'EQUALS', :values => [feed_id]}
53
- ]
54
- }
55
-
56
- feed = feed_srv.get(feed_selector)[:entries][0]
57
-
58
- # Add new line1 and line2 feed attributes.
59
- next_attribute_index = feed[:attributes].length()
60
-
61
- feed[:attributes] = [
62
- {:type => 'STRING', :name => 'Line 1 Description'},
63
- {:type => 'STRING', :name => 'Line 2 Description'}
64
- ]
65
-
66
- mutated_feed_result = feed_srv.mutate([
67
- {:operator => 'SET', :operand => feed}
68
- ])
69
-
70
- mutated_feed = mutated_feed_result[:value][0]
71
- line_1_attribute = mutated_feed[:attributes][next_attribute_index]
72
- line_2_attribute = mutated_feed[:attributes][next_attribute_index + 1]
73
-
74
- # Update feed items.
75
- feed_item_ids = feed_item_descriptions.keys
76
- item_selector = {
77
- :fields => ['FeedId', 'FeedItemId', 'AttributeValues'],
78
- :predicates => [
79
- {:field => 'FeedId', :operator => 'EQUALS', :values => [feed_id]},
80
- {:field => 'FeedItemId', :operator => 'IN', :values => feed_item_ids}
81
- ]
82
- }
83
-
84
- feed_items = feed_item_srv.get(item_selector)[:entries]
85
-
86
- item_operations = feed_items.map do |feed_item|
87
- feed_item[:attribute_values] = [
88
- {
89
- :feed_attribute_id => line_1_attribute[:id],
90
- :string_value => feed_item_descriptions[feed_item[:feed_item_id]][0]
91
- },
92
- {
93
- :feed_attribute_id => line_2_attribute[:id],
94
- :string_value => feed_item_descriptions[feed_item[:feed_item_id]][1]
95
- }
96
- ]
97
-
98
- {:operator => 'SET', :operand => feed_item}
99
- end
100
- items_update_result = feed_item_srv.mutate(item_operations)
101
- puts 'Updated %d items' % items_update_result[:value].length
102
-
103
- # Update feed mapping.
104
- mapping_selector = {
105
- :fields => [
106
- 'FeedId',
107
- 'FeedMappingId',
108
- 'PlaceholderType',
109
- 'AttributeFieldMappings'
110
- ],
111
- :predicates => [
112
- {:field => 'FeedId', :operator => 'EQUALS', :values => [feed_id]}
113
- ]
114
- }
115
- feed_mapping_results = feed_mapping_srv.get(mapping_selector)
116
- feed_mapping = feed_mapping_results[:entries][0]
117
-
118
- # Feed mappings are immutable, so we have to delete it and re-add
119
- # it with modifications.
120
- feed_mapping_srv.mutate([
121
- {:operator => 'REMOVE', :operand => feed_mapping}
122
- ])[:value][0]
123
-
124
- feed_mapping[:attribute_field_mappings].push(
125
- {
126
- :feed_attribute_id => line_1_attribute[:id],
127
- :field_id => PLACEHOLDER_FIELD_LINE_1_TEXT
128
- },
129
- {
130
- :feed_attribute_id => line_2_attribute[:id],
131
- :field_id => PLACEHOLDER_FIELD_LINE_2_TEXT
132
- }
133
- )
134
- mapping_update_result = feed_mapping_srv.mutate([
135
- {:operator => 'ADD', :operand => feed_mapping}
136
- ])
137
-
138
- mutated_mapping = mapping_update_result[:value][0]
139
- puts 'Updated field mappings for feedId %d and feedMappingId %d to:' %
140
- [mutated_mapping[:feed_id], mutated_mapping[:feed_mapping_id]]
141
- mutated_mapping[:attribute_field_mappings].each do |field_mapping|
142
- puts "\tfeedAttributeId %d --> fieldId %d" %
143
- [field_mapping[:feed_attribute_id], field_mapping[:field_id]]
144
- end
145
- end
146
-
147
- if __FILE__ == $0
148
- API_VERSION = :v201309
149
-
150
- # See the Placeholder reference page for a list of all the placeholder types
151
- # and fields:
152
- # https://developers.google.com/adwords/api/docs/appendix/placeholders
153
- PLACEHOLDER_FIELD_LINE_1_TEXT = 3
154
- PLACEHOLDER_FIELD_LINE_2_TEXT = 4
155
-
156
- begin
157
- feed_id = 'INSERT_FEED_ID_HERE'.to_i
158
- feed_item_descriptions = {
159
- 'INSERT_FEED_ITEM_A_ID_HERE'.to_i => [
160
- 'INSERT_FEED_ITEM_A_LINE1_DESC_HERE',
161
- 'INSERT_FEED_ITEM_A_LINE2_DESC_HERE'
162
- ],
163
- 'INSERT_FEED_ITEM_B_ID_HERE'.to_i => [
164
- 'INSERT_FEED_ITEM_B_LINE1_DESC_HERE',
165
- 'INSERT_FEED_ITEM_B_LINE2_DESC_HERE'
166
- ]
167
- }
168
-
169
- update_site_links(feed_id, feed_item_descriptions)
170
-
171
- # Authorization error.
172
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
173
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
174
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
175
- "to retrieve and store OAuth2 tokens."
176
- puts "See this wiki page for more details:\n\n " +
177
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
178
-
179
- # HTTP errors.
180
- rescue AdsCommon::Errors::HttpError => e
181
- puts "HTTP Error: %s" % e
182
-
183
- # API errors.
184
- rescue AdwordsApi::Errors::ApiException => e
185
- puts "Message: %s" % e.message
186
- puts 'Errors:'
187
- e.errors.each_with_index do |error, index|
188
- puts "\tError [%d]:" % (index + 1)
189
- error.each do |field, value|
190
- puts "\t\t%s: %s" % [field, value]
191
- end
192
- end
193
- end
194
- end