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,113 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2013, 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 code example imports offline conversion values for specific clicks to
20
- # your account. To get Google Click ID for a click, run
21
- # CLICK_PERFORMANCE_REPORT.
22
-
23
- require 'adwords_api'
24
- require 'date'
25
-
26
- def upload_offline_conversions(conversion_name, google_click_id,
27
- conversion_time, conversion_value)
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
- conversion_tracker_srv =
37
- adwords.service(:ConversionTrackerService, API_VERSION)
38
- conversion_feed_srv =
39
- adwords.service(:OfflineConversionFeedService, API_VERSION)
40
-
41
- # Create an upload conversion. Once created, this entry will be visible under
42
- # Tools and Analysis->Conversion and will have Source = Import.
43
- upload_conversion = {
44
- :xsi_type => 'UploadConversion',
45
- :category => 'PAGE_VIEW',
46
- :name => conversion_name,
47
- :viewthrough_lookback_window => 30,
48
- :ctc_lookback_window => 90
49
- }
50
- return_conversions = conversion_tracker_srv.mutate([
51
- {:operator => 'ADD', :operand => upload_conversion}])
52
- return_conversions[:value].each do |tracker|
53
- puts "Upload conversion tracker with name '%s' and ID %d was created." %
54
- [tracker[:name], tracker[:id]]
55
- end
56
-
57
- # Associate offline conversions with the upload conversion tracker we created.
58
- feed = {
59
- :conversion_name => conversion_name,
60
- :google_click_id => google_click_id,
61
- :conversion_time => conversion_time,
62
- :conversion_value => conversion_value
63
- }
64
- return_feeds = conversion_feed_srv.mutate([
65
- {:operator => 'ADD', :operand => feed}])
66
- return_feeds[:value].each do |return_feed|
67
- puts ("Uploaded offline conversion value %.2f for Google Click ID '%s', " +
68
- 'to %s') % [return_feed[:conversion_value],
69
- return_feed[:google_click_id],
70
- return_feed[:conversion_name]]
71
- end
72
- end
73
-
74
- if __FILE__ == $0
75
- API_VERSION = :v201502
76
-
77
- begin
78
- # Name of the upload conversion to be created.
79
- conversion_name = 'INSERT_CONVERSION_NAME_HERE'
80
- # Google Click ID of the click for which offline conversions are uploaded.
81
- google_click_id = 'INSERT_GOOGLE_CLICK_ID_HERE'
82
- # Conversion time in 'yyyymmdd hhmmss' format.
83
- conversion_time = Time.new.strftime("%Y%m%d %H%M%S")
84
- # Conversion value to be uploaded.
85
- conversion_value = 'INSERT_CONVERSION_VALUE_HERE'.to_f
86
-
87
- upload_offline_conversions(conversion_name, google_click_id,
88
- conversion_time, conversion_value)
89
-
90
- # Authorization error.
91
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
92
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
93
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
94
- "to retrieve and store OAuth2 tokens."
95
- puts "See this wiki page for more details:\n\n " +
96
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
97
-
98
- # HTTP errors.
99
- rescue AdsCommon::Errors::HttpError => e
100
- puts "HTTP Error: %s" % e
101
-
102
- # API errors.
103
- rescue AdwordsApi::Errors::ApiException => e
104
- puts "Message: %s" % e.message
105
- puts 'Errors:'
106
- e.errors.each_with_index do |error, index|
107
- puts "\tError [%d]:" % (index + 1)
108
- error.each do |field, value|
109
- puts "\t\t%s: %s" % [field, value]
110
- end
111
- end
112
- end
113
- end
@@ -1,147 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Copyright:: Copyright 2013, 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 a Shared Bidding Strategy and uses it to construct a
20
- # campaign.
21
-
22
- require 'adwords_api'
23
- require 'date'
24
-
25
- def use_shared_bidding_strategy()
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
- budget_srv = adwords.service(:BudgetService, API_VERSION)
35
- bidding_srv = adwords.service(:BiddingStrategyService, API_VERSION)
36
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
37
-
38
- # Create a budget, which can be shared by multiple campaigns.
39
- budget = {
40
- :name => 'Interplanetary budget #%d' % (Time.new.to_f * 1000).to_i,
41
- :amount => {:micro_amount => 50000000},
42
- :delivery_method => 'STANDARD',
43
- :period => 'DAILY',
44
- :is_explicitly_shared => true
45
- }
46
- return_budget = budget_srv.mutate([
47
- {:operator => 'ADD', :operand => budget}])
48
- budget_id = return_budget[:value].first[:budget_id]
49
-
50
- # Create a shared bidding strategy.
51
- shared_bidding_strategy = {
52
- :name => 'Maximize Clicks #%d' % (Time.new.to_f * 1000).to_i,
53
- :bidding_scheme => {
54
- :xsi_type => 'TargetSpendBiddingScheme',
55
- # Optionally set additional bidding scheme parameters.
56
- :bid_ceiling => {:micro_amount => 20000000},
57
- :spend_target => {:micro_amount => 40000000}
58
- }
59
- }
60
- return_strategy = bidding_srv.mutate([
61
- {:operator => 'ADD', :operand => shared_bidding_strategy}])
62
-
63
- bidding_strategy = return_strategy[:value].first
64
- puts ("Shared bidding strategy with name '%s' and ID %d of type '%s' was " +
65
- 'created') %
66
- [bidding_strategy[:name], bidding_strategy[:id], bidding_strategy[:type]]
67
-
68
- # Create campaigns.
69
- campaigns = [
70
- {
71
- :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
72
- :status => 'PAUSED',
73
- :bidding_strategy_configuration => {
74
- :bidding_strategy_id => bidding_strategy[:id]
75
- },
76
- # Budget (required) - note only the budget ID is required.
77
- :budget => {:budget_id => budget_id},
78
- :advertising_channel_type => 'SEARCH',
79
- :network_setting => {
80
- :target_google_search => true,
81
- :target_search_network => true,
82
- :target_content_network => true
83
- }
84
- },
85
- {
86
- :name => "Interplanetary Cruise banner #%d" % (Time.new.to_f * 1000).to_i,
87
- :status => 'PAUSED',
88
- :bidding_strategy_configuration => {
89
- :bidding_strategy_id => bidding_strategy[:id]
90
- },
91
- :budget => {:budget_id => budget_id},
92
- :advertising_channel_type => 'DISPLAY',
93
- :network_setting => {
94
- :target_google_search => false,
95
- :target_search_network => false,
96
- :target_content_network => true
97
- }
98
- }
99
- ]
100
-
101
- # Prepare for adding campaign.
102
- operations = campaigns.map do |campaign|
103
- {:operator => 'ADD', :operand => campaign}
104
- end
105
-
106
- # Add campaign.
107
- response = campaign_srv.mutate(operations)
108
- if response and response[:value]
109
- response[:value].each do |campaign|
110
- puts "Campaign with name '%s' and ID %d was added." %
111
- [campaign[:name], campaign[:id]]
112
- end
113
- else
114
- raise new StandardError, 'No campaigns were added.'
115
- end
116
- end
117
-
118
- if __FILE__ == $0
119
- API_VERSION = :v201502
120
-
121
- begin
122
- use_shared_bidding_strategy()
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,140 +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 ad groups. To get a list of existing
20
- # campaigns run get_campaigns.rb.
21
-
22
- require 'adwords_api'
23
-
24
- def add_ad_groups(campaign_id)
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
- ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
34
-
35
- ad_groups = [
36
- {
37
- :name => "Earth to Mars Cruises #%d" % (Time.new.to_f * 1000).to_i,
38
- :status => 'ENABLED',
39
- :campaign_id => campaign_id,
40
- :bidding_strategy_configuration => {
41
- :bids => [
42
- {
43
- # The 'xsi_type' field allows you to specify the xsi:type of the
44
- # object being created. It's only necessary when you must provide
45
- # an explicit type that the client library can't infer.
46
- :xsi_type => 'CpcBid',
47
- :bid => {:micro_amount => 10000000}
48
- }
49
- ]
50
- },
51
- :settings => [
52
- # Targeting restriction settings - these settings only affect serving
53
- # for the Display Network.
54
- {
55
- :xsi_type => 'TargetingSetting',
56
- :details => [
57
- # Restricting to serve ads that match your ad group placements.
58
- # This is equivalent to choosing "Target and bid" in the UI.
59
- {
60
- :xsi_type => 'TargetingSettingDetail',
61
- :criterion_type_group => 'PLACEMENT',
62
- :target_all => false
63
- },
64
- # Using your ad group verticals only for bidding. This is equivalent
65
- # to choosing "Bid only" in the UI.
66
- {
67
- :xsi_type => 'TargetingSettingDetail',
68
- :criterion_type_group => 'VERTICAL',
69
- :target_all => true
70
- }
71
- ]
72
- }
73
- ]
74
- },
75
- {
76
- :name => 'Earth to Pluto Cruises #%d' % (Time.new.to_f * 1000).to_i,
77
- :status => 'ENABLED',
78
- :campaign_id => campaign_id,
79
- :bidding_strategy_configuration => {
80
- :bids => [
81
- {
82
- # The 'xsi_type' field allows you to specify the xsi:type of the
83
- # object being created. It's only necessary when you must provide
84
- # an explicit type that the client library can't infer.
85
- :xsi_type => 'CpcBid',
86
- :bid => {:micro_amount => 10000000}
87
- }
88
- ]
89
- }
90
- }
91
- ]
92
-
93
- # Prepare operations for adding ad groups.
94
- operations = ad_groups.map do |ad_group|
95
- {:operator => 'ADD', :operand => ad_group}
96
- end
97
-
98
- # Add ad groups.
99
- response = ad_group_srv.mutate(operations)
100
- if response and response[:value]
101
- response[:value].each do |ad_group|
102
- puts "Ad group ID %d was successfully added." % ad_group[:id]
103
- end
104
- else
105
- raise StandardError, 'No ad group was added'
106
- end
107
- end
108
-
109
- if __FILE__ == $0
110
- API_VERSION = :v201502
111
-
112
- begin
113
- # Campaign ID to add ad group to.
114
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
115
- add_ad_groups(campaign_id)
116
-
117
- # Authorization error.
118
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
119
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
120
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
121
- "to retrieve and store OAuth2 tokens."
122
- puts "See this wiki page for more details:\n\n " +
123
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
124
-
125
- # HTTP errors.
126
- rescue AdsCommon::Errors::HttpError => e
127
- puts "HTTP Error: %s" % e
128
-
129
- # API errors.
130
- rescue AdwordsApi::Errors::ApiException => e
131
- puts "Message: %s" % e.message
132
- puts 'Errors:'
133
- e.errors.each_with_index do |error, index|
134
- puts "\tError [%d]:" % (index + 1)
135
- error.each do |field, value|
136
- puts "\t\t%s: %s" % [field, value]
137
- end
138
- end
139
- end
140
- end
@@ -1,139 +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 campaigns.
20
-
21
- require 'adwords_api'
22
- require 'date'
23
-
24
- def add_campaigns()
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
- budget_srv = adwords.service(:BudgetService, API_VERSION)
34
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
35
-
36
- # Create a budget, which can be shared by multiple campaigns.
37
- budget = {
38
- :name => 'Interplanetary budget #%d' % (Time.new.to_f * 1000).to_i,
39
- :amount => {:micro_amount => 50000000},
40
- :delivery_method => 'STANDARD',
41
- :period => 'DAILY'
42
- }
43
- budget_operation = {:operator => 'ADD', :operand => budget}
44
-
45
- # Add budget.
46
- return_budget = budget_srv.mutate([budget_operation])
47
- budget_id = return_budget[:value].first[:budget_id]
48
-
49
- # Create campaigns.
50
- campaigns = [
51
- {
52
- :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
53
- :status => 'PAUSED',
54
- :bidding_strategy_configuration => {
55
- :bidding_strategy_type => 'MANUAL_CPC'
56
- },
57
- # Budget (required) - note only the budget ID is required.
58
- :budget => {:budget_id => budget_id},
59
- :advertising_channel_type => 'SEARCH',
60
- # Optional fields:
61
- :start_date =>
62
- DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d'),
63
- :ad_serving_optimization_status => 'ROTATE',
64
- :network_setting => {
65
- :target_google_search => true,
66
- :target_search_network => true,
67
- :target_content_network => true
68
- },
69
- :settings => [
70
- {
71
- :xsi_type => 'GeoTargetTypeSetting',
72
- :positive_geo_target_type => 'DONT_CARE',
73
- :negative_geo_target_type => 'DONT_CARE'
74
- }
75
- ],
76
- :frequency_cap => {
77
- :impressions => '5',
78
- :time_unit => 'DAY',
79
- :level => 'ADGROUP'
80
- }
81
- },
82
- {
83
- :name => "Interplanetary Cruise banner #%d" % (Time.new.to_f * 1000).to_i,
84
- :status => 'PAUSED',
85
- :bidding_strategy_configuration => {
86
- :bidding_strategy_type => 'MANUAL_CPC'
87
- },
88
- :budget => {:budget_id => budget_id},
89
- :advertising_channel_type => 'DISPLAY'
90
- }
91
- ]
92
-
93
- # Prepare for adding campaign.
94
- operations = campaigns.map do |campaign|
95
- {:operator => 'ADD', :operand => campaign}
96
- end
97
-
98
- # Add campaign.
99
- response = campaign_srv.mutate(operations)
100
- if response and response[:value]
101
- response[:value].each do |campaign|
102
- puts "Campaign with name '%s' and ID %d was added." %
103
- [campaign[:name], campaign[:id]]
104
- end
105
- else
106
- raise new StandardError, 'No campaigns were added.'
107
- end
108
- end
109
-
110
- if __FILE__ == $0
111
- API_VERSION = :v201502
112
-
113
- begin
114
- add_campaigns()
115
-
116
- # Authorization error.
117
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
118
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
119
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
120
- "to retrieve and store OAuth2 tokens."
121
- puts "See this wiki page for more details:\n\n " +
122
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
123
-
124
- # HTTP errors.
125
- rescue AdsCommon::Errors::HttpError => e
126
- puts "HTTP Error: %s" % e
127
-
128
- # API errors.
129
- rescue AdwordsApi::Errors::ApiException => e
130
- puts "Message: %s" % e.message
131
- puts 'Errors:'
132
- e.errors.each_with_index do |error, index|
133
- puts "\tError [%d]:" % (index + 1)
134
- error.each do |field, value|
135
- puts "\t\t%s: %s" % [field, value]
136
- end
137
- end
138
- end
139
- end