google-adwords-api 0.13.2 → 0.14.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 (163) hide show
  1. checksums.yaml +8 -8
  2. data/ChangeLog +12 -0
  3. data/examples/v201406/advanced_operations/{add_places_location_extensions.rb → add_google_my_business_location_extensions.rb} +24 -15
  4. data/examples/v201409/advanced_operations/{add_places_location_extensions.rb → add_google_my_business_location_extensions.rb} +41 -16
  5. data/examples/v201409/advanced_operations/use_shared_bidding_strategy.rb +1 -13
  6. data/examples/v201409/basic_operations/add_campaigns.rb +0 -10
  7. data/examples/v201409/remarketing/add_audience.rb +0 -1
  8. data/examples/v201409/remarketing/add_rule_based_user_lists.rb +171 -0
  9. data/examples/v201409/shopping_campaigns/add_shopping_campaign.rb +0 -4
  10. data/lib/adwords_api/api_config.rb +0 -78
  11. data/lib/adwords_api/report_header_handler.rb +0 -4
  12. data/lib/adwords_api/report_utils.rb +0 -9
  13. data/lib/adwords_api/version.rb +1 -1
  14. data/test/adwords_api/test_choices.rb +138 -0
  15. data/test/adwords_api/test_report_utils.rb +0 -27
  16. data/test/templates/v201406/basic_operations_get_campaigns.def +1 -1
  17. data/test/templates/v201406/misc_use_oauth2_jwt.def +1 -1
  18. data/test/templates/v201409/basic_operations_get_campaigns.def +1 -1
  19. data/test/templates/v201409/misc_use_oauth2_jwt.def +1 -1
  20. metadata +8 -149
  21. data/examples/v201402/account_management/create_account.rb +0 -95
  22. data/examples/v201402/account_management/get_account_alerts.rb +0 -122
  23. data/examples/v201402/account_management/get_account_changes.rb +0 -145
  24. data/examples/v201402/account_management/get_account_hierarchy.rb +0 -103
  25. data/examples/v201402/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  26. data/examples/v201402/advanced_operations/add_click_to_download_ad.rb +0 -137
  27. data/examples/v201402/advanced_operations/add_places_location_extensions.rb +0 -159
  28. data/examples/v201402/advanced_operations/add_site_links.rb +0 -306
  29. data/examples/v201402/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  30. data/examples/v201402/advanced_operations/update_site_links.rb +0 -194
  31. data/examples/v201402/advanced_operations/upload_offline_conversions.rb +0 -117
  32. data/examples/v201402/advanced_operations/use_shared_bidding_strategy.rb +0 -163
  33. data/examples/v201402/basic_operations/add_ad_groups.rb +0 -142
  34. data/examples/v201402/basic_operations/add_campaigns.rb +0 -153
  35. data/examples/v201402/basic_operations/add_keywords.rb +0 -116
  36. data/examples/v201402/basic_operations/add_text_ads.rb +0 -113
  37. data/examples/v201402/basic_operations/delete_ad.rb +0 -93
  38. data/examples/v201402/basic_operations/delete_ad_group.rb +0 -89
  39. data/examples/v201402/basic_operations/delete_campaign.rb +0 -90
  40. data/examples/v201402/basic_operations/delete_keyword.rb +0 -98
  41. data/examples/v201402/basic_operations/get_ad_groups.rb +0 -106
  42. data/examples/v201402/basic_operations/get_campaigns.rb +0 -101
  43. data/examples/v201402/basic_operations/get_campaigns_with_awql.rb +0 -93
  44. data/examples/v201402/basic_operations/get_keywords.rb +0 -112
  45. data/examples/v201402/basic_operations/get_text_ads.rb +0 -114
  46. data/examples/v201402/basic_operations/pause_ad.rb +0 -92
  47. data/examples/v201402/basic_operations/update_ad_group.rb +0 -89
  48. data/examples/v201402/basic_operations/update_campaign.rb +0 -90
  49. data/examples/v201402/basic_operations/update_keyword.rb +0 -110
  50. data/examples/v201402/campaign_management/add_experiment.rb +0 -166
  51. data/examples/v201402/campaign_management/add_keywords_in_bulk.rb +0 -158
  52. data/examples/v201402/campaign_management/add_location_extension.rb +0 -125
  53. data/examples/v201402/campaign_management/get_all_disapproved_ads.rb +0 -101
  54. data/examples/v201402/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -93
  55. data/examples/v201402/campaign_management/promote_experiment.rb +0 -85
  56. data/examples/v201402/campaign_management/set_ad_parameters.rb +0 -122
  57. data/examples/v201402/campaign_management/set_criterion_bid_modifier.rb +0 -108
  58. data/examples/v201402/campaign_management/validate_text_ad.rb +0 -114
  59. data/examples/v201402/error_handling/handle_captcha_challenge.rb +0 -93
  60. data/examples/v201402/error_handling/handle_partial_failures.rb +0 -134
  61. data/examples/v201402/error_handling/handle_policy_violation_error.rb +0 -145
  62. data/examples/v201402/error_handling/handle_two_factor_authorization_error.rb +0 -88
  63. data/examples/v201402/misc/create_ad_words_session_without_properties_file.rb +0 -94
  64. data/examples/v201402/misc/get_all_images_and_videos.rb +0 -108
  65. data/examples/v201402/misc/setup_oauth2.rb +0 -88
  66. data/examples/v201402/misc/upload_image.rb +0 -97
  67. data/examples/v201402/misc/use_oauth2_jwt.rb +0 -97
  68. data/examples/v201402/optimization/estimate_keyword_traffic.rb +0 -137
  69. data/examples/v201402/optimization/get_keyword_bid_simulations.rb +0 -100
  70. data/examples/v201402/optimization/get_keyword_ideas.rb +0 -130
  71. data/examples/v201402/optimization/get_placement_ideas.rb +0 -112
  72. data/examples/v201402/remarketing/add_audience.rb +0 -123
  73. data/examples/v201402/remarketing/add_conversion_tracker.rb +0 -105
  74. data/examples/v201402/reporting/download_criteria_report.rb +0 -87
  75. data/examples/v201402/reporting/download_criteria_report_with_awql.rb +0 -86
  76. data/examples/v201402/reporting/get_report_fields.rb +0 -79
  77. data/examples/v201402/reporting/parallel_report_download.rb +0 -171
  78. data/examples/v201402/shopping_campaigns/add_product_partition_tree.rb +0 -269
  79. data/examples/v201402/shopping_campaigns/add_product_scope.rb +0 -133
  80. data/examples/v201402/shopping_campaigns/add_shopping_campaign.rb +0 -135
  81. data/examples/v201402/shopping_campaigns/get_product_category_taxonomy.rb +0 -117
  82. data/examples/v201402/shopping_campaigns/set_product_sales_channel.rb +0 -98
  83. data/examples/v201402/targeting/add_campaign_targeting_criteria.rb +0 -157
  84. data/examples/v201402/targeting/add_demographic_targeting_criteria.rb +0 -116
  85. data/examples/v201402/targeting/get_campaign_targeting_criteria.rb +0 -110
  86. data/examples/v201402/targeting/get_targetable_languages_and_carriers.rb +0 -94
  87. data/examples/v201402/targeting/lookup_location.rb +0 -112
  88. data/lib/adwords_api/v201402/ad_group_ad_service.rb +0 -42
  89. data/lib/adwords_api/v201402/ad_group_ad_service_registry.rb +0 -46
  90. data/lib/adwords_api/v201402/ad_group_bid_modifier_service.rb +0 -42
  91. data/lib/adwords_api/v201402/ad_group_bid_modifier_service_registry.rb +0 -46
  92. data/lib/adwords_api/v201402/ad_group_criterion_service.rb +0 -42
  93. data/lib/adwords_api/v201402/ad_group_criterion_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201402/ad_group_feed_service.rb +0 -42
  95. data/lib/adwords_api/v201402/ad_group_feed_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201402/ad_group_service.rb +0 -42
  97. data/lib/adwords_api/v201402/ad_group_service_registry.rb +0 -46
  98. data/lib/adwords_api/v201402/ad_param_service.rb +0 -38
  99. data/lib/adwords_api/v201402/ad_param_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201402/adwords_user_list_service.rb +0 -38
  101. data/lib/adwords_api/v201402/adwords_user_list_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201402/alert_service.rb +0 -34
  103. data/lib/adwords_api/v201402/alert_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201402/bidding_strategy_service.rb +0 -42
  105. data/lib/adwords_api/v201402/bidding_strategy_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201402/budget_order_service.rb +0 -42
  107. data/lib/adwords_api/v201402/budget_order_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201402/budget_service.rb +0 -42
  109. data/lib/adwords_api/v201402/budget_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201402/campaign_ad_extension_service.rb +0 -38
  111. data/lib/adwords_api/v201402/campaign_ad_extension_service_registry.rb +0 -46
  112. data/lib/adwords_api/v201402/campaign_criterion_service.rb +0 -42
  113. data/lib/adwords_api/v201402/campaign_criterion_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201402/campaign_feed_service.rb +0 -42
  115. data/lib/adwords_api/v201402/campaign_feed_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201402/campaign_service.rb +0 -42
  117. data/lib/adwords_api/v201402/campaign_service_registry.rb +0 -46
  118. data/lib/adwords_api/v201402/campaign_shared_set_service.rb +0 -38
  119. data/lib/adwords_api/v201402/campaign_shared_set_service_registry.rb +0 -47
  120. data/lib/adwords_api/v201402/constant_data_service.rb +0 -66
  121. data/lib/adwords_api/v201402/constant_data_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201402/conversion_tracker_service.rb +0 -38
  123. data/lib/adwords_api/v201402/conversion_tracker_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201402/customer_feed_service.rb +0 -42
  125. data/lib/adwords_api/v201402/customer_feed_service_registry.rb +0 -46
  126. data/lib/adwords_api/v201402/customer_service.rb +0 -38
  127. data/lib/adwords_api/v201402/customer_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201402/customer_sync_service.rb +0 -34
  129. data/lib/adwords_api/v201402/customer_sync_service_registry.rb +0 -47
  130. data/lib/adwords_api/v201402/data_service.rb +0 -46
  131. data/lib/adwords_api/v201402/data_service_registry.rb +0 -46
  132. data/lib/adwords_api/v201402/experiment_service.rb +0 -38
  133. data/lib/adwords_api/v201402/experiment_service_registry.rb +0 -46
  134. data/lib/adwords_api/v201402/feed_item_service.rb +0 -42
  135. data/lib/adwords_api/v201402/feed_item_service_registry.rb +0 -46
  136. data/lib/adwords_api/v201402/feed_mapping_service.rb +0 -42
  137. data/lib/adwords_api/v201402/feed_mapping_service_registry.rb +0 -46
  138. data/lib/adwords_api/v201402/feed_service.rb +0 -42
  139. data/lib/adwords_api/v201402/feed_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201402/geo_location_service.rb +0 -34
  141. data/lib/adwords_api/v201402/geo_location_service_registry.rb +0 -46
  142. data/lib/adwords_api/v201402/location_criterion_service.rb +0 -38
  143. data/lib/adwords_api/v201402/location_criterion_service_registry.rb +0 -46
  144. data/lib/adwords_api/v201402/managed_customer_service.rb +0 -50
  145. data/lib/adwords_api/v201402/managed_customer_service_registry.rb +0 -46
  146. data/lib/adwords_api/v201402/media_service.rb +0 -42
  147. data/lib/adwords_api/v201402/media_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201402/mutate_job_service.rb +0 -42
  149. data/lib/adwords_api/v201402/mutate_job_service_registry.rb +0 -46
  150. data/lib/adwords_api/v201402/offline_conversion_feed_service.rb +0 -34
  151. data/lib/adwords_api/v201402/offline_conversion_feed_service_registry.rb +0 -46
  152. data/lib/adwords_api/v201402/report_definition_service.rb +0 -34
  153. data/lib/adwords_api/v201402/report_definition_service_registry.rb +0 -46
  154. data/lib/adwords_api/v201402/shared_criterion_service.rb +0 -38
  155. data/lib/adwords_api/v201402/shared_criterion_service_registry.rb +0 -47
  156. data/lib/adwords_api/v201402/shared_set_service.rb +0 -38
  157. data/lib/adwords_api/v201402/shared_set_service_registry.rb +0 -47
  158. data/lib/adwords_api/v201402/targeting_idea_service.rb +0 -38
  159. data/lib/adwords_api/v201402/targeting_idea_service_registry.rb +0 -46
  160. data/lib/adwords_api/v201402/traffic_estimator_service.rb +0 -34
  161. data/lib/adwords_api/v201402/traffic_estimator_service_registry.rb +0 -46
  162. data/test/templates/v201402/basic_operations_get_campaigns.def +0 -114
  163. data/test/templates/v201402/misc_use_oauth2_jwt.def +0 -131
@@ -1,105 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.sgomes@gmail.com (Sérgio Gomes)
5
- #
6
- # Copyright:: Copyright 2011, 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 add an AdWords conversion tracker.
22
- #
23
- # Tags: ConversionTrackerService.mutate
24
-
25
- require 'adwords_api'
26
-
27
- def add_conversion_tracker()
28
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
29
- # when called without parameters.
30
- adwords = AdwordsApi::Api.new
31
-
32
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
33
- # the configuration file or provide your own logger:
34
- # adwords.logger = Logger.new('adwords_xml.log')
35
-
36
- conv_tracker_srv = adwords.service(:ConversionTrackerService, API_VERSION)
37
-
38
- # Prepare for adding conversion.
39
- operation = {
40
- :operator => 'ADD',
41
- :operand => {
42
- # The 'xsi_type' field allows you to specify the xsi:type of the object
43
- # being created. It's only necessary when you must provide an explicit
44
- # type that the client library can't infer.
45
- :xsi_type => 'AdWordsConversionTracker',
46
- :name => "Earth to Mars Cruises Conversion #%d" %
47
- (Time.new.to_f * 1000).to_i,
48
- :category => 'DEFAULT',
49
- :markup_language => 'HTML',
50
- :text_format => 'HIDDEN',
51
- # Optional fields:
52
- :status => 'ENABLED',
53
- :viewthrough_lookback_window => 15,
54
- :viewthrough_conversion_de_dup_search => true,
55
- :is_product_ads_chargeable => true,
56
- :product_ads_chargeable_conversion_window => 15,
57
- :conversion_page_language => 'en',
58
- :background_color => '#0000FF',
59
- :default_revenue_value => 23.41,
60
- :always_use_default_revenue_value = true
61
- }
62
- }
63
-
64
- # Add conversion.
65
- response = conv_tracker_srv.mutate([operation])
66
- if response and response[:value]
67
- conversion = response[:value].first
68
- puts ("Conversion with ID %d, name '%s', status '%s' and category '%s'" +
69
- " was added.") % [conversion[:id], conversion[:name],
70
- conversion[:status], conversion[:category]]
71
- else
72
- puts 'No conversions were added.'
73
- end
74
- end
75
-
76
- if __FILE__ == $0
77
- API_VERSION = :v201402
78
-
79
- begin
80
- add_conversion_tracker()
81
-
82
- # Authorization error.
83
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
84
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
85
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
86
- "to retrieve and store OAuth2 tokens."
87
- puts "See this wiki page for more details:\n\n " +
88
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
89
-
90
- # HTTP errors.
91
- rescue AdsCommon::Errors::HttpError => e
92
- puts "HTTP Error: %s" % e
93
-
94
- # API errors.
95
- rescue AdwordsApi::Errors::ApiException => e
96
- puts "Message: %s" % e.message
97
- puts 'Errors:'
98
- e.errors.each_with_index do |error, index|
99
- puts "\tError [%d]:" % (index + 1)
100
- error.each do |field, value|
101
- puts "\t\t%s: %s" % [field, value]
102
- end
103
- end
104
- end
105
- end
@@ -1,87 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, 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 gets and downloads an Ad Hoc report from a XML report definition.
22
-
23
- require 'adwords_api'
24
-
25
- def download_criteria_report(file_name)
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
- # Get report utilities for the version.
35
- report_utils = adwords.report_utils(API_VERSION)
36
-
37
- # Define report definition. You can also pass your own XML text as a string.
38
- report_definition = {
39
- :selector => {
40
- :fields => ['CampaignId', 'AdGroupId', 'Id', 'Criteria', 'CriteriaType',
41
- 'Impressions', 'Clicks', 'Cost'],
42
- # Predicates are optional.
43
- :predicates => {
44
- :field => 'Status',
45
- :operator => 'IN',
46
- :values => ['ACTIVE', 'PAUSED']
47
- }
48
- },
49
- :report_name => 'Last 7 days CRITERIA_PERFORMANCE_REPORT',
50
- :report_type => 'CRITERIA_PERFORMANCE_REPORT',
51
- :download_format => 'CSV',
52
- :date_range_type => 'LAST_7_DAYS',
53
- # Enable to get rows with zero impressions.
54
- :include_zero_impressions => false
55
- }
56
-
57
- # Download report, using "download_report_as_file" utility method.
58
- # To retrieve the report as return value, use "download_report" method.
59
- report_utils.download_report_as_file(report_definition, file_name)
60
- puts "Report was downloaded to '%s'." % file_name
61
- end
62
-
63
- if __FILE__ == $0
64
- API_VERSION = :v201402
65
-
66
- begin
67
- # File name to write report to.
68
- file_name = 'INSERT_OUTPUT_FILE_NAME_HERE'
69
- download_criteria_report(file_name)
70
-
71
- # Authorization error.
72
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
73
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
74
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
75
- "to retrieve and store OAuth2 tokens."
76
- puts "See this wiki page for more details:\n\n " +
77
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
78
-
79
- # HTTP errors.
80
- rescue AdsCommon::Errors::HttpError => e
81
- puts "HTTP Error: %s" % e
82
-
83
- # API errors.
84
- rescue AdwordsApi::Errors::ReportError => e
85
- puts "Reporting Error: %s" % e.message
86
- end
87
- end
@@ -1,86 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2012, 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 gets an Ad Hoc report using AdWords Query Language.
22
- # See AWQL guide for more details:
23
- # https://developers.google.com/adwords/api/docs/guides/awql
24
-
25
- require 'date'
26
-
27
- require 'adwords_api'
28
-
29
- def download_criteria_report_with_awql(file_name, report_format)
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
- # Get report utilities for the version.
39
- report_utils = adwords.report_utils(API_VERSION)
40
-
41
- # Prepare a date range for the last week. Instead you can use 'LAST_7_DAYS'.
42
- date_range = '%s,%s' % [
43
- DateTime.parse((Date.today - 7).to_s).strftime('%Y%m%d'),
44
- DateTime.parse((Date.today - 1).to_s).strftime('%Y%m%d')
45
- ]
46
-
47
- # Define report definition. You can also pass your own XML text as a string.
48
- report_query = 'SELECT CampaignId, AdGroupId, Id, Criteria, CriteriaType, ' +
49
- 'Impressions, Clicks, Cost FROM CRITERIA_PERFORMANCE_REPORT ' +
50
- 'WHERE Status IN [ACTIVE, PAUSED] ' +
51
- 'DURING %s' % date_range
52
-
53
- # Download report, using "download_report_as_file_with_awql" utility method.
54
- # To retrieve the report as return value, use "download_report_with_awql"
55
- # method.
56
- report_utils.download_report_as_file_with_awql(report_query, report_format,
57
- file_name)
58
- puts "Report was downloaded to '%s'." % file_name
59
- end
60
-
61
- if __FILE__ == $0
62
- API_VERSION = :v201402
63
-
64
- begin
65
- # File name to write report to.
66
- file_name = 'INSERT_OUTPUT_FILE_NAME_HERE'
67
- report_format = 'CSV'
68
- download_criteria_report_with_awql(file_name, report_format)
69
-
70
- # Authorization error.
71
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
72
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
73
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
74
- "to retrieve and store OAuth2 tokens."
75
- puts "See this wiki page for more details:\n\n " +
76
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
77
-
78
- # HTTP errors.
79
- rescue AdsCommon::Errors::HttpError => e
80
- puts 'HTTP Error: %s' % e
81
-
82
- # API errors.
83
- rescue AdwordsApi::Errors::ReportError => e
84
- puts 'Reporting Error: %s' % e.message
85
- end
86
- end
@@ -1,79 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.sgomes@gmail.com (Sérgio Gomes)
5
- #
6
- # Copyright:: Copyright 2011, 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 gets the list of possible report fields for a report type.
22
- #
23
- # Tags: ReportDefinitionService.getReportFields
24
-
25
- require 'adwords_api'
26
-
27
- def get_report_fields(report_type)
28
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
29
- # when called without parameters.
30
- adwords = AdwordsApi::Api.new
31
-
32
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
33
- # the configuration file or provide your own logger:
34
- # adwords.logger = Logger.new('adwords_xml.log')
35
-
36
- report_def_srv = adwords.service(:ReportDefinitionService, API_VERSION)
37
-
38
- # Get report fields.
39
- fields = report_def_srv.get_report_fields(report_type)
40
- if fields
41
- puts "Report type '%s' contains the following fields:" % report_type
42
- fields.each do |field|
43
- puts ' - %s (%s)' % [field[:field_name], field[:field_type]]
44
- puts ' := [%s]' % field[:enum_values].join(', ') if field[:enum_values]
45
- end
46
- end
47
- end
48
-
49
- if __FILE__ == $0
50
- API_VERSION = :v201402
51
-
52
- begin
53
- report_type = 'INSERT_REPORT_TYPE_HERE'
54
- get_report_fields(report_type)
55
-
56
- # Authorization error.
57
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
58
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
59
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
60
- "to retrieve and store OAuth2 tokens."
61
- puts "See this wiki page for more details:\n\n " +
62
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
63
-
64
- # HTTP errors.
65
- rescue AdsCommon::Errors::HttpError => e
66
- puts "HTTP Error: %s" % e
67
-
68
- # API errors.
69
- rescue AdwordsApi::Errors::ApiException => e
70
- puts "Message: %s" % e.message
71
- puts 'Errors:'
72
- e.errors.each_with_index do |error, index|
73
- puts "\tError [%d]:" % (index + 1)
74
- error.each do |field, value|
75
- puts "\t\t%s: %s" % [field, value]
76
- end
77
- end
78
- end
79
- end
@@ -1,171 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2011, 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 gets and downloads an Ad Hoc report from a XML report definition
22
- # for all accounts in hierarchy in multiple parallel threads.
23
- #
24
- # Note: This code example uses MCC-level calls and won't work with Test
25
- # Accounts, see: https://developers.google.com/adwords/api/docs/test-accounts
26
-
27
- require 'thread'
28
-
29
- require 'adwords_api'
30
- require 'adwords_api/utils'
31
-
32
- def parallel_report_download()
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
- # Determine list of customer IDs to retrieve report for. For this example we
42
- # will use ManagedCustomerService to get all IDs in hierarchy.
43
-
44
- managed_customer_srv = adwords.service(:ManagedCustomerService, API_VERSION)
45
-
46
- # Get the account hierarchy for this account.
47
- selector = {:fields => ['CustomerId']}
48
-
49
- # Run the request at the MCC level.
50
- graph = adwords.use_mcc() {managed_customer_srv.get(selector)}
51
-
52
- # Using queue to balance load between threads.
53
- queue = Queue.new()
54
-
55
- if graph and graph[:entries] and !graph[:entries].empty?
56
- graph[:entries].each {|account| queue << account[:customer_id]}
57
- else
58
- raise StandardError, 'Can not retrieve any customer ID'
59
- end
60
-
61
- # Get report utilities for the version.
62
- report_utils = adwords.report_utils(API_VERSION)
63
-
64
- # Define report definition. You can also pass your own XML text as a string.
65
- report_definition = {
66
- :selector => {
67
- :fields => ['CampaignId', 'Id', 'Impressions', 'Clicks', 'Cost'],
68
- # Predicates are optional.
69
- :predicates => {
70
- :field => 'Status',
71
- :operator => 'IN',
72
- :values => ['ENABLED', 'PAUSED']
73
- }
74
- },
75
- :report_name => 'Custom ADGROUP_PERFORMANCE_REPORT',
76
- :report_type => 'ADGROUP_PERFORMANCE_REPORT',
77
- :download_format => 'CSV',
78
- :date_range_type => 'LAST_7_DAYS',
79
- # Enable to get rows with zero impressions.
80
- :include_zero_impressions => false
81
- }
82
-
83
- puts 'Retrieving %d reports with %d threads:' % [queue.size, THREADS]
84
-
85
- reports_succeeded = Queue.new()
86
- reports_failed = Queue.new()
87
-
88
- # Creating a mutex to control access to the queue.
89
- queue_mutex = Mutex.new
90
-
91
- # Start all the threads.
92
- threads = (1..THREADS).map do |thread_id|
93
- Thread.new(report_definition) do |local_def|
94
- cid = nil
95
- begin
96
- cid = queue_mutex.synchronize {(queue.empty?) ? nil : queue.pop(true)}
97
- if cid
98
- retry_count = 0
99
- file_name = 'adgroup_%010d.csv' % cid
100
- puts "[%2d/%d] Loading report for customer ID %s into '%s'..." %
101
- [thread_id, retry_count,
102
- AdwordsApi::Utils.format_id(cid), file_name]
103
- begin
104
- report_utils.download_report_as_file(local_def, file_name, cid)
105
- reports_succeeded << {:cid => cid, :file_name => file_name}
106
- rescue AdwordsApi::Errors::ReportError => e
107
- if e.http_code == 500 && retry_count < MAX_RETRIES
108
- retry_count += 1
109
- sleep(retry_count * BACKOFF_FACTOR)
110
- retry
111
- else
112
- puts(('Report failed for customer ID %s with code %d after %d ' +
113
- 'retries.') % [cid, e.http_code, retry_count + 1])
114
- reports_failed <<
115
- {:cid => cid, :http_code => e.http_code, :message => e.message}
116
- end
117
- end
118
- end
119
- end while (cid != nil)
120
- end
121
- end
122
-
123
- # Wait for all threads to finish.
124
- threads.each { |aThread| aThread.join }
125
-
126
- puts 'Download completed, results:'
127
- puts 'Successful reports:'
128
- while !reports_succeeded.empty? do
129
- result = reports_succeeded.pop()
130
- puts "\tClient ID %s => '%s'" %
131
- [AdwordsApi::Utils.format_id(result[:cid]), result[:file_name]]
132
- end
133
- puts 'Failed reports:'
134
- while !reports_failed.empty? do
135
- result = reports_failed.pop()
136
- puts "\tClient ID %s => Code: %d, Message: '%s'" %
137
- [AdwordsApi::Utils.format_id(result[:cid]),
138
- result[:http_code], result[:message]]
139
- end
140
- puts 'End of results.'
141
- end
142
-
143
- if __FILE__ == $0
144
- API_VERSION = :v201402
145
- # Number of parallel threads to spawn.
146
- THREADS = 10
147
- # Maximum number of retries for 500 errors.
148
- MAX_RETRIES = 5
149
- # Timeout between retries in seconds.
150
- BACKOFF_FACTOR = 5
151
-
152
- begin
153
- parallel_report_download()
154
-
155
- # Authorization error.
156
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
157
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
158
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
159
- "to retrieve and store OAuth2 tokens."
160
- puts "See this wiki page for more details:\n\n " +
161
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
162
-
163
- # HTTP errors.
164
- rescue AdsCommon::Errors::HttpError => e
165
- puts 'HTTP Error: %s' % e
166
-
167
- # API errors.
168
- rescue AdwordsApi::Errors::ReportError => e
169
- puts 'Reporting Error: %s' % e.message
170
- end
171
- end