google-adwords-api 0.17.0 → 0.18.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 (170) hide show
  1. checksums.yaml +5 -13
  2. data/ChangeLog +5 -0
  3. data/README.md +3 -3
  4. data/adwords_api.yml +3 -0
  5. data/examples/v201509/{campaign_management → advanced_operations}/add_complete_campaigns_using_batch_job.rb +10 -16
  6. data/examples/v201509/advanced_operations/add_keywords_using_incremental_batch_job.rb +179 -0
  7. data/examples/v201509/reporting/stream_criteria_report_results.rb +97 -0
  8. data/lib/adwords_api/api_config.rb +0 -86
  9. data/lib/adwords_api/batch_job_utils.rb +124 -51
  10. data/lib/adwords_api/incremental_upload_helper.rb +71 -0
  11. data/lib/adwords_api/report_header_handler.rb +1 -1
  12. data/lib/adwords_api/report_stream.rb +64 -0
  13. data/lib/adwords_api/report_utils.rb +88 -8
  14. data/lib/adwords_api/version.rb +1 -1
  15. data/test/adwords_api/test_batch_job_utils.rb +15 -0
  16. metadata +18 -168
  17. data/examples/v201502/account_management/create_account.rb +0 -88
  18. data/examples/v201502/account_management/get_account_changes.rb +0 -139
  19. data/examples/v201502/account_management/get_account_hierarchy.rb +0 -94
  20. data/examples/v201502/advanced_operations/add_ad_customizers.rb +0 -184
  21. data/examples/v201502/advanced_operations/add_ad_group_bid_modifier.rb +0 -101
  22. data/examples/v201502/advanced_operations/add_click_to_download_ad.rb +0 -133
  23. data/examples/v201502/advanced_operations/add_text_ad_with_upgraded_urls.rb +0 -134
  24. data/examples/v201502/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -133
  25. data/examples/v201502/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -166
  26. data/examples/v201502/advanced_operations/get_ad_group_bid_modifiers.rb +0 -102
  27. data/examples/v201502/advanced_operations/upload_offline_conversions.rb +0 -113
  28. data/examples/v201502/advanced_operations/use_shared_bidding_strategy.rb +0 -147
  29. data/examples/v201502/basic_operations/add_ad_groups.rb +0 -140
  30. data/examples/v201502/basic_operations/add_campaigns.rb +0 -139
  31. data/examples/v201502/basic_operations/add_keywords.rb +0 -114
  32. data/examples/v201502/basic_operations/add_text_ads.rb +0 -109
  33. data/examples/v201502/basic_operations/get_ad_groups.rb +0 -102
  34. data/examples/v201502/basic_operations/get_campaigns.rb +0 -97
  35. data/examples/v201502/basic_operations/get_campaigns_with_awql.rb +0 -89
  36. data/examples/v201502/basic_operations/get_keywords.rb +0 -108
  37. data/examples/v201502/basic_operations/get_text_ads.rb +0 -110
  38. data/examples/v201502/basic_operations/pause_ad.rb +0 -88
  39. data/examples/v201502/basic_operations/remove_ad.rb +0 -89
  40. data/examples/v201502/basic_operations/remove_ad_group.rb +0 -85
  41. data/examples/v201502/basic_operations/remove_campaign.rb +0 -87
  42. data/examples/v201502/basic_operations/remove_keyword.rb +0 -94
  43. data/examples/v201502/basic_operations/update_ad_group.rb +0 -85
  44. data/examples/v201502/basic_operations/update_campaign.rb +0 -86
  45. data/examples/v201502/basic_operations/update_keyword.rb +0 -106
  46. data/examples/v201502/campaign_management/add_campaign_labels.rb +0 -82
  47. data/examples/v201502/campaign_management/add_experiment.rb +0 -162
  48. data/examples/v201502/campaign_management/add_keywords_in_bulk.rb +0 -153
  49. data/examples/v201502/campaign_management/get_all_disapproved_ads.rb +0 -97
  50. data/examples/v201502/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -89
  51. data/examples/v201502/campaign_management/get_campaigns_by_label.rb +0 -108
  52. data/examples/v201502/campaign_management/promote_experiment.rb +0 -81
  53. data/examples/v201502/campaign_management/set_ad_parameters.rb +0 -118
  54. data/examples/v201502/campaign_management/set_criterion_bid_modifier.rb +0 -104
  55. data/examples/v201502/campaign_management/validate_text_ad.rb +0 -110
  56. data/examples/v201502/error_handling/handle_partial_failures.rb +0 -130
  57. data/examples/v201502/error_handling/handle_policy_violation_error.rb +0 -141
  58. data/examples/v201502/extensions/add_google_my_business_location_extensions.rb +0 -179
  59. data/examples/v201502/extensions/add_site_links.rb +0 -164
  60. data/examples/v201502/extensions/add_site_links_using_feeds.rb +0 -271
  61. data/examples/v201502/migration/migrate_to_extension_settings.rb +0 -386
  62. data/examples/v201502/migration/upgrade_ad_url.rb +0 -93
  63. data/examples/v201502/misc/create_ad_words_session_without_properties_file.rb +0 -92
  64. data/examples/v201502/misc/get_all_images_and_videos.rb +0 -104
  65. data/examples/v201502/misc/setup_oauth2.rb +0 -84
  66. data/examples/v201502/misc/upload_image.rb +0 -93
  67. data/examples/v201502/misc/use_oauth2_jwt.rb +0 -93
  68. data/examples/v201502/optimization/estimate_keyword_traffic.rb +0 -146
  69. data/examples/v201502/optimization/get_keyword_bid_simulations.rb +0 -95
  70. data/examples/v201502/optimization/get_keyword_ideas.rb +0 -126
  71. data/examples/v201502/remarketing/add_audience.rb +0 -118
  72. data/examples/v201502/remarketing/add_conversion_tracker.rb +0 -100
  73. data/examples/v201502/remarketing/add_rule_based_user_lists.rb +0 -167
  74. data/examples/v201502/reporting/download_criteria_report.rb +0 -85
  75. data/examples/v201502/reporting/download_criteria_report_with_awql.rb +0 -84
  76. data/examples/v201502/reporting/get_report_fields.rb +0 -75
  77. data/examples/v201502/reporting/parallel_report_download.rb +0 -166
  78. data/examples/v201502/shopping_campaigns/add_product_partition_tree.rb +0 -267
  79. data/examples/v201502/shopping_campaigns/add_product_scope.rb +0 -129
  80. data/examples/v201502/shopping_campaigns/add_shopping_campaign.rb +0 -129
  81. data/examples/v201502/shopping_campaigns/get_product_category_taxonomy.rb +0 -115
  82. data/examples/v201502/targeting/add_campaign_targeting_criteria.rb +0 -169
  83. data/examples/v201502/targeting/add_demographic_targeting_criteria.rb +0 -112
  84. data/examples/v201502/targeting/get_campaign_targeting_criteria.rb +0 -106
  85. data/examples/v201502/targeting/get_targetable_languages_and_carriers.rb +0 -89
  86. data/examples/v201502/targeting/lookup_location.rb +0 -108
  87. data/lib/adwords_api/v201502/account_label_service.rb +0 -46
  88. data/lib/adwords_api/v201502/account_label_service_registry.rb +0 -46
  89. data/lib/adwords_api/v201502/ad_customizer_feed_service.rb +0 -46
  90. data/lib/adwords_api/v201502/ad_customizer_feed_service_registry.rb +0 -46
  91. data/lib/adwords_api/v201502/ad_group_ad_service.rb +0 -70
  92. data/lib/adwords_api/v201502/ad_group_ad_service_registry.rb +0 -46
  93. data/lib/adwords_api/v201502/ad_group_bid_modifier_service.rb +0 -54
  94. data/lib/adwords_api/v201502/ad_group_bid_modifier_service_registry.rb +0 -46
  95. data/lib/adwords_api/v201502/ad_group_criterion_service.rb +0 -62
  96. data/lib/adwords_api/v201502/ad_group_criterion_service_registry.rb +0 -46
  97. data/lib/adwords_api/v201502/ad_group_extension_setting_service.rb +0 -54
  98. data/lib/adwords_api/v201502/ad_group_extension_setting_service_registry.rb +0 -46
  99. data/lib/adwords_api/v201502/ad_group_feed_service.rb +0 -54
  100. data/lib/adwords_api/v201502/ad_group_feed_service_registry.rb +0 -46
  101. data/lib/adwords_api/v201502/ad_group_service.rb +0 -62
  102. data/lib/adwords_api/v201502/ad_group_service_registry.rb +0 -46
  103. data/lib/adwords_api/v201502/ad_param_service.rb +0 -46
  104. data/lib/adwords_api/v201502/ad_param_service_registry.rb +0 -46
  105. data/lib/adwords_api/v201502/adwords_user_list_service.rb +0 -46
  106. data/lib/adwords_api/v201502/adwords_user_list_service_registry.rb +0 -46
  107. data/lib/adwords_api/v201502/bidding_strategy_service.rb +0 -54
  108. data/lib/adwords_api/v201502/bidding_strategy_service_registry.rb +0 -46
  109. data/lib/adwords_api/v201502/budget_order_service.rb +0 -54
  110. data/lib/adwords_api/v201502/budget_order_service_registry.rb +0 -46
  111. data/lib/adwords_api/v201502/budget_service.rb +0 -54
  112. data/lib/adwords_api/v201502/budget_service_registry.rb +0 -46
  113. data/lib/adwords_api/v201502/campaign_criterion_service.rb +0 -54
  114. data/lib/adwords_api/v201502/campaign_criterion_service_registry.rb +0 -46
  115. data/lib/adwords_api/v201502/campaign_extension_setting_service.rb +0 -54
  116. data/lib/adwords_api/v201502/campaign_extension_setting_service_registry.rb +0 -46
  117. data/lib/adwords_api/v201502/campaign_feed_service.rb +0 -54
  118. data/lib/adwords_api/v201502/campaign_feed_service_registry.rb +0 -46
  119. data/lib/adwords_api/v201502/campaign_service.rb +0 -62
  120. data/lib/adwords_api/v201502/campaign_service_registry.rb +0 -46
  121. data/lib/adwords_api/v201502/campaign_shared_set_service.rb +0 -46
  122. data/lib/adwords_api/v201502/campaign_shared_set_service_registry.rb +0 -46
  123. data/lib/adwords_api/v201502/constant_data_service.rb +0 -102
  124. data/lib/adwords_api/v201502/constant_data_service_registry.rb +0 -46
  125. data/lib/adwords_api/v201502/conversion_tracker_service.rb +0 -54
  126. data/lib/adwords_api/v201502/conversion_tracker_service_registry.rb +0 -46
  127. data/lib/adwords_api/v201502/customer_extension_setting_service.rb +0 -54
  128. data/lib/adwords_api/v201502/customer_extension_setting_service_registry.rb +0 -46
  129. data/lib/adwords_api/v201502/customer_feed_service.rb +0 -54
  130. data/lib/adwords_api/v201502/customer_feed_service_registry.rb +0 -46
  131. data/lib/adwords_api/v201502/customer_service.rb +0 -46
  132. data/lib/adwords_api/v201502/customer_service_registry.rb +0 -46
  133. data/lib/adwords_api/v201502/customer_sync_service.rb +0 -38
  134. data/lib/adwords_api/v201502/customer_sync_service_registry.rb +0 -47
  135. data/lib/adwords_api/v201502/data_service.rb +0 -78
  136. data/lib/adwords_api/v201502/data_service_registry.rb +0 -46
  137. data/lib/adwords_api/v201502/experiment_service.rb +0 -46
  138. data/lib/adwords_api/v201502/experiment_service_registry.rb +0 -46
  139. data/lib/adwords_api/v201502/feed_item_service.rb +0 -54
  140. data/lib/adwords_api/v201502/feed_item_service_registry.rb +0 -46
  141. data/lib/adwords_api/v201502/feed_mapping_service.rb +0 -54
  142. data/lib/adwords_api/v201502/feed_mapping_service_registry.rb +0 -46
  143. data/lib/adwords_api/v201502/feed_service.rb +0 -54
  144. data/lib/adwords_api/v201502/feed_service_registry.rb +0 -46
  145. data/lib/adwords_api/v201502/geo_location_service.rb +0 -38
  146. data/lib/adwords_api/v201502/geo_location_service_registry.rb +0 -46
  147. data/lib/adwords_api/v201502/label_service.rb +0 -54
  148. data/lib/adwords_api/v201502/label_service_registry.rb +0 -46
  149. data/lib/adwords_api/v201502/location_criterion_service.rb +0 -46
  150. data/lib/adwords_api/v201502/location_criterion_service_registry.rb +0 -46
  151. data/lib/adwords_api/v201502/managed_customer_service.rb +0 -78
  152. data/lib/adwords_api/v201502/managed_customer_service_registry.rb +0 -46
  153. data/lib/adwords_api/v201502/media_service.rb +0 -54
  154. data/lib/adwords_api/v201502/media_service_registry.rb +0 -46
  155. data/lib/adwords_api/v201502/mutate_job_service.rb +0 -54
  156. data/lib/adwords_api/v201502/mutate_job_service_registry.rb +0 -46
  157. data/lib/adwords_api/v201502/offline_conversion_feed_service.rb +0 -38
  158. data/lib/adwords_api/v201502/offline_conversion_feed_service_registry.rb +0 -46
  159. data/lib/adwords_api/v201502/report_definition_service.rb +0 -38
  160. data/lib/adwords_api/v201502/report_definition_service_registry.rb +0 -46
  161. data/lib/adwords_api/v201502/shared_criterion_service.rb +0 -46
  162. data/lib/adwords_api/v201502/shared_criterion_service_registry.rb +0 -46
  163. data/lib/adwords_api/v201502/shared_set_service.rb +0 -46
  164. data/lib/adwords_api/v201502/shared_set_service_registry.rb +0 -46
  165. data/lib/adwords_api/v201502/targeting_idea_service.rb +0 -38
  166. data/lib/adwords_api/v201502/targeting_idea_service_registry.rb +0 -46
  167. data/lib/adwords_api/v201502/traffic_estimator_service.rb +0 -38
  168. data/lib/adwords_api/v201502/traffic_estimator_service_registry.rb +0 -46
  169. data/test/templates/v201502/basic_operations_get_campaigns.def +0 -116
  170. data/test/templates/v201502/misc_use_oauth2_service_account.def +0 -131
@@ -1,118 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example illustrates how to create a user list (a.k.a. Audience) and shows
20
- # its associated conversion tracker code snippet.
21
-
22
- require 'adwords_api'
23
-
24
- def add_audience()
25
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
26
- # when called without parameters.
27
- adwords = AdwordsApi::Api.new
28
-
29
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
30
- # the configuration file or provide your own logger:
31
- # adwords.logger = Logger.new('adwords_xml.log')
32
-
33
- user_list_srv = adwords.service(:AdwordsUserListService, API_VERSION)
34
- conv_tracker_srv = adwords.service(:ConversionTrackerService, API_VERSION)
35
-
36
- # Prepare for adding remarketing user list.
37
- name = "Mars cruise customers #%d" % (Time.new.to_f * 1000).to_i
38
- operation = {
39
- :operator => 'ADD',
40
- :operand => {
41
- # The 'xsi_type' field allows you to specify the xsi:type of the object
42
- # being created. It's only necessary when you must provide an explicit
43
- # type that the client library can't infer.
44
- :xsi_type => 'BasicUserList',
45
- :name => name,
46
- :description => 'A list of mars cruise customers in the last year',
47
- :membership_life_span => 365,
48
- :conversion_types => [{:name => name}],
49
- # Optional field.
50
- :status => 'OPEN'
51
- }
52
- }
53
-
54
- # Add user list.
55
- response = user_list_srv.mutate([operation])
56
- if response and response[:value]
57
- user_list = response[:value].first
58
-
59
- # Get conversion snippets.
60
- if user_list and user_list[:conversion_types]
61
- conversion_ids = user_list[:conversion_types][:id]
62
- selector = {
63
- # We're actually interested in the 'Snippet' field, which is returned
64
- # automatically.
65
- :fields => ['Id'],
66
- :predicates => [
67
- {:field => 'Id', :operator => 'IN', :values => [conversion_ids]}
68
- ]
69
- }
70
- conv_tracker_response = conv_tracker_srv.get(selector)
71
- if conv_tracker_response and conv_tracker_response[:entries]
72
- conversions = conv_tracker_response[:entries]
73
- end
74
- end
75
- puts "User list with name '%s' and ID %d was added." %
76
- [user_list[:name], user_list[:id]]
77
- # Display user list associated conversion code snippets.
78
- if conversions
79
- conversions.each do |conversion|
80
- puts "Conversion type code snipped associated to the list:\n\t\t%s\n" %
81
- conversion[:snippet]
82
- end
83
- end
84
- else
85
- puts 'No user lists were added.'
86
- end
87
- end
88
-
89
- if __FILE__ == $0
90
- API_VERSION = :v201502
91
-
92
- begin
93
- add_audience()
94
-
95
- # Authorization error.
96
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
97
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
98
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
99
- "to retrieve and store OAuth2 tokens."
100
- puts "See this wiki page for more details:\n\n " +
101
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
102
-
103
- # HTTP errors.
104
- rescue AdsCommon::Errors::HttpError => e
105
- puts "HTTP Error: %s" % e
106
-
107
- # API errors.
108
- rescue AdwordsApi::Errors::ApiException => e
109
- puts "Message: %s" % e.message
110
- puts 'Errors:'
111
- e.errors.each_with_index do |error, index|
112
- puts "\tError [%d]:" % (index + 1)
113
- error.each do |field, value|
114
- puts "\t\t%s: %s" % [field, value]
115
- end
116
- end
117
- end
118
- end
@@ -1,100 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example illustrates how to add an AdWords conversion tracker.
20
-
21
- require 'adwords_api'
22
-
23
- def add_conversion_tracker()
24
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
25
- # when called without parameters.
26
- adwords = AdwordsApi::Api.new
27
-
28
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
29
- # the configuration file or provide your own logger:
30
- # adwords.logger = Logger.new('adwords_xml.log')
31
-
32
- conv_tracker_srv = adwords.service(:ConversionTrackerService, API_VERSION)
33
-
34
- # Prepare for adding conversion.
35
- operation = {
36
- :operator => 'ADD',
37
- :operand => {
38
- # The 'xsi_type' field allows you to specify the xsi:type of the object
39
- # being created. It's only necessary when you must provide an explicit
40
- # type that the client library can't infer.
41
- :xsi_type => 'AdWordsConversionTracker',
42
- :name => "Earth to Mars Cruises Conversion #%d" %
43
- (Time.new.to_f * 1000).to_i,
44
- :category => 'DEFAULT',
45
- :markup_language => 'HTML',
46
- :text_format => 'HIDDEN',
47
- # Optional fields:
48
- :status => 'ENABLED',
49
- :viewthrough_lookback_window => 15,
50
- :is_product_ads_chargeable => true,
51
- :product_ads_chargeable_conversion_window => 15,
52
- :conversion_page_language => 'en',
53
- :background_color => '#0000FF',
54
- :default_revenue_value => 23.41,
55
- :always_use_default_revenue_value => true
56
- }
57
- }
58
-
59
- # Add conversion.
60
- response = conv_tracker_srv.mutate([operation])
61
- if response and response[:value]
62
- conversion = response[:value].first
63
- puts ("Conversion with ID %d, name '%s', status '%s' and category '%s'" +
64
- " was added.") % [conversion[:id], conversion[:name],
65
- conversion[:status], conversion[:category]]
66
- else
67
- puts 'No conversions were added.'
68
- end
69
- end
70
-
71
- if __FILE__ == $0
72
- API_VERSION = :v201502
73
-
74
- begin
75
- add_conversion_tracker()
76
-
77
- # Authorization error.
78
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
79
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
80
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
81
- "to retrieve and store OAuth2 tokens."
82
- puts "See this wiki page for more details:\n\n " +
83
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
84
-
85
- # HTTP errors.
86
- rescue AdsCommon::Errors::HttpError => e
87
- puts "HTTP Error: %s" % e
88
-
89
- # API errors.
90
- rescue AdwordsApi::Errors::ApiException => e
91
- puts "Message: %s" % e.message
92
- puts 'Errors:'
93
- e.errors.each_with_index do |error, index|
94
- puts "\tError [%d]:" % (index + 1)
95
- error.each do |field, value|
96
- puts "\t\t%s: %s" % [field, value]
97
- end
98
- end
99
- end
100
- end
@@ -1,167 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2014, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example adds two rule-based remarketing user lists: one with no site
20
- # visit data restrictions, and another that will only include users who visit
21
- # your site in the next six months.
22
-
23
- require 'adwords_api'
24
-
25
- def add_rule_based_user_lists()
26
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
27
- # when called without parameters.
28
- adwords = AdwordsApi::Api.new
29
-
30
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
31
- # the configuration file or provide your own logger:
32
- # adwords.logger = Logger.new('adwords_xml.log')
33
-
34
- user_list_srv = adwords.service(:AdwordsUserListService, API_VERSION)
35
-
36
- # First rule item group - users who visited the checkout page and had more
37
- # than one item in their shopping cart.
38
- cart_rule_item = {
39
- :xsi_type => 'StringRuleItem',
40
- :key => {
41
- :name => 'ecomm_pagetype'
42
- },
43
- :op => 'EQUALS',
44
- :value => 'checkout'
45
- }
46
-
47
- cart_size_rule_item = {
48
- :xsi_type => 'NumberRuleItem',
49
- :key => {
50
- :name => 'cartsize'
51
- },
52
- :op => 'GREATER_THAN',
53
- :value => 1.0
54
- }
55
-
56
- # Combine the two rule items into a RuleItemGroup so AdWords will AND
57
- # their rules together.
58
- checkout_multiple_item_group = {
59
- :items => [cart_rule_item, cart_size_rule_item]
60
- }
61
-
62
- # Second rule item group - users who checked out after October 31st
63
- # and before January 1st.
64
- start_date_rule_item = {
65
- :xsi_type => 'DateRuleItem',
66
- :key => {
67
- :name => 'checkoutdate'
68
- },
69
- :op => 'AFTER',
70
- :value => '20141031'
71
- }
72
-
73
- end_date_rule_item = {
74
- :xsi_type => 'DateRuleItem',
75
- :key => {
76
- :name => 'checkoutdate'
77
- },
78
- :op => 'BEFORE',
79
- :value => '20150101'
80
- }
81
-
82
- # Combine the date rule items into a RuleItemGroup.
83
- checked_out_nov_dec_item_group = {
84
- :items => [start_date_rule_item, end_date_rule_item]
85
- }
86
-
87
- # Combine the rule item groups into a Rule so AdWords will OR the
88
- # groups together.
89
- rule = {
90
- :groups => [checkout_multiple_item_group, checked_out_nov_dec_item_group]
91
- }
92
-
93
- # Create the user list with no restrictions on site visit date.
94
- expression_user_list = {
95
- :xsi_type => 'ExpressionRuleUserList',
96
- :name => 'Users who checked out in November or December OR ' +
97
- 'visited the checkout page with more than one item in their cart',
98
- :description => 'Expression based user list',
99
- :rule => rule
100
- }
101
-
102
- # Create the user list restricted to users who visit your site within the
103
- # specified timeframe.
104
- date_user_list = {
105
- :xsi_type => 'DateSpecificRuleUserList',
106
- :name => 'Date rule user list created at ' + Time.now.to_s,
107
- :description => 'Users who visited the site between 20141031 and ' +
108
- '20150331 and checked out in November or December OR visited the ' +
109
- 'checkout page with more than one item in their cart',
110
- # We re-use the rule here. To avoid side effects, we need a deep copy.
111
- :rule => Marshal.load(Marshal.dump(rule)),
112
- # Set the start and end dates of the user list.
113
- :start_date => '20141031',
114
- :end_date => '20150331'
115
- }
116
-
117
- # Create operations to add the user lists.
118
- operations = [expression_user_list, date_user_list].map do |user_list|
119
- {
120
- :operand => user_list,
121
- :operator => 'ADD'
122
- }
123
- end
124
-
125
- # Submit the operations.
126
- response = user_list_srv.mutate(operations)
127
-
128
- # Display the results.
129
- response[:value].each do |user_list|
130
- puts ("User list added with ID %d, name '%s', status '%s', " +
131
- "list type '%s', accountUserListStatus '%s', description '%s'.") %
132
- [user_list[:id], user_list[:name], user_list[:status],
133
- user_list[:list_type], user_list[:account_user_list_status],
134
- user_list[:description]]
135
- end
136
- end
137
-
138
- if __FILE__ == $0
139
- API_VERSION = :v201502
140
-
141
- begin
142
- add_rule_based_user_lists()
143
-
144
- # Authorization error.
145
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
146
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
147
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
148
- "to retrieve and store OAuth2 tokens."
149
- puts "See this wiki page for more details:\n\n " +
150
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
151
-
152
- # HTTP errors.
153
- rescue AdsCommon::Errors::HttpError => e
154
- puts "HTTP Error: %s" % e
155
-
156
- # API errors.
157
- rescue AdwordsApi::Errors::ApiException => e
158
- puts "Message: %s" % e.message
159
- puts 'Errors:'
160
- e.errors.each_with_index do |error, index|
161
- puts "\tError [%d]:" % (index + 1)
162
- error.each do |field, value|
163
- puts "\t\t%s: %s" % [field, value]
164
- end
165
- end
166
- end
167
- end
@@ -1,85 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
5
- #
6
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- # implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
- # This example gets and downloads an Ad Hoc report from a XML report definition.
20
-
21
- require 'adwords_api'
22
-
23
- def download_criteria_report(file_name)
24
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
25
- # when called without parameters.
26
- adwords = AdwordsApi::Api.new
27
-
28
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
29
- # the configuration file or provide your own logger:
30
- # adwords.logger = Logger.new('adwords_xml.log')
31
-
32
- # Get report utilities for the version.
33
- report_utils = adwords.report_utils(API_VERSION)
34
-
35
- # Define report definition. You can also pass your own XML text as a string.
36
- report_definition = {
37
- :selector => {
38
- :fields => ['CampaignId', 'AdGroupId', 'Id', 'Criteria', 'CriteriaType',
39
- 'FinalUrls', 'Impressions', 'Clicks', 'Cost'],
40
- # Predicates are optional.
41
- :predicates => {
42
- :field => 'Status',
43
- :operator => 'IN',
44
- :values => ['ENABLED', 'PAUSED']
45
- }
46
- },
47
- :report_name => 'Last 7 days CRITERIA_PERFORMANCE_REPORT',
48
- :report_type => 'CRITERIA_PERFORMANCE_REPORT',
49
- :download_format => 'CSV',
50
- :date_range_type => 'LAST_7_DAYS',
51
- # Enable to get rows with zero impressions.
52
- :include_zero_impressions => false
53
- }
54
-
55
- # Download report, using "download_report_as_file" utility method.
56
- # To retrieve the report as return value, use "download_report" method.
57
- report_utils.download_report_as_file(report_definition, file_name)
58
- puts "Report was downloaded to '%s'." % file_name
59
- end
60
-
61
- if __FILE__ == $0
62
- API_VERSION = :v201502
63
-
64
- begin
65
- # File name to write report to.
66
- file_name = 'INSERT_OUTPUT_FILE_NAME_HERE'
67
- download_criteria_report(file_name)
68
-
69
- # Authorization error.
70
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
71
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
72
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
73
- "to retrieve and store OAuth2 tokens."
74
- puts "See this wiki page for more details:\n\n " +
75
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
76
-
77
- # HTTP errors.
78
- rescue AdsCommon::Errors::HttpError => e
79
- puts "HTTP Error: %s" % e
80
-
81
- # API errors.
82
- rescue AdwordsApi::Errors::ReportError => e
83
- puts "Reporting Error: %s" % e.message
84
- end
85
- end