google-adwords-api 0.15.2 → 0.16.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 (167) hide show
  1. checksums.yaml +8 -8
  2. data/ChangeLog +7 -0
  3. data/adwords_api.yml +3 -2
  4. data/examples/v201506/basic_operations/get_keywords.rb +4 -3
  5. data/examples/v201506/misc/{create_ad_words_session_without_properties_file.rb → use_runtime_config.rb} +2 -2
  6. data/lib/adwords_api.rb +1 -1
  7. data/lib/adwords_api/api_config.rb +0 -86
  8. data/lib/adwords_api/report_header_handler.rb +4 -4
  9. data/lib/adwords_api/version.rb +1 -1
  10. data/test/templates/v201502/basic_operations_get_campaigns.def +1 -1
  11. data/test/templates/v201502/{misc_use_oauth2_jwt.def → misc_use_oauth2_service_account.def} +2 -2
  12. data/test/templates/v201506/basic_operations_get_campaigns.def +1 -1
  13. data/test/templates/v201506/{misc_use_oauth2_jwt.def → misc_use_oauth2_service_account.def} +2 -2
  14. metadata +7 -160
  15. data/examples/v201409/account_management/create_account.rb +0 -92
  16. data/examples/v201409/account_management/get_account_changes.rb +0 -145
  17. data/examples/v201409/account_management/get_account_hierarchy.rb +0 -102
  18. data/examples/v201409/advanced_operations/add_ad_customizers.rb +0 -277
  19. data/examples/v201409/advanced_operations/add_ad_group_bid_modifier.rb +0 -105
  20. data/examples/v201409/advanced_operations/add_click_to_download_ad.rb +0 -137
  21. data/examples/v201409/advanced_operations/add_text_ad_with_upgraded_urls.rb +0 -137
  22. data/examples/v201409/advanced_operations/get_ad_group_bid_modifiers.rb +0 -106
  23. data/examples/v201409/advanced_operations/upload_offline_conversions.rb +0 -117
  24. data/examples/v201409/advanced_operations/use_shared_bidding_strategy.rb +0 -152
  25. data/examples/v201409/basic_operations/add_ad_groups.rb +0 -144
  26. data/examples/v201409/basic_operations/add_campaigns.rb +0 -143
  27. data/examples/v201409/basic_operations/add_keywords.rb +0 -118
  28. data/examples/v201409/basic_operations/add_text_ads.rb +0 -113
  29. data/examples/v201409/basic_operations/get_ad_groups.rb +0 -106
  30. data/examples/v201409/basic_operations/get_campaigns.rb +0 -101
  31. data/examples/v201409/basic_operations/get_campaigns_with_awql.rb +0 -93
  32. data/examples/v201409/basic_operations/get_keywords.rb +0 -112
  33. data/examples/v201409/basic_operations/get_text_ads.rb +0 -114
  34. data/examples/v201409/basic_operations/pause_ad.rb +0 -92
  35. data/examples/v201409/basic_operations/remove_ad.rb +0 -93
  36. data/examples/v201409/basic_operations/remove_ad_group.rb +0 -89
  37. data/examples/v201409/basic_operations/remove_campaign.rb +0 -91
  38. data/examples/v201409/basic_operations/remove_keyword.rb +0 -98
  39. data/examples/v201409/basic_operations/update_ad_group.rb +0 -89
  40. data/examples/v201409/basic_operations/update_campaign.rb +0 -90
  41. data/examples/v201409/basic_operations/update_keyword.rb +0 -110
  42. data/examples/v201409/campaign_management/add_campaign_labels.rb +0 -86
  43. data/examples/v201409/campaign_management/add_experiment.rb +0 -166
  44. data/examples/v201409/campaign_management/add_keywords_in_bulk.rb +0 -158
  45. data/examples/v201409/campaign_management/add_location_extension.rb +0 -125
  46. data/examples/v201409/campaign_management/get_all_disapproved_ads.rb +0 -101
  47. data/examples/v201409/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -93
  48. data/examples/v201409/campaign_management/get_campaigns_by_label.rb +0 -112
  49. data/examples/v201409/campaign_management/promote_experiment.rb +0 -85
  50. data/examples/v201409/campaign_management/set_ad_parameters.rb +0 -122
  51. data/examples/v201409/campaign_management/set_criterion_bid_modifier.rb +0 -108
  52. data/examples/v201409/campaign_management/validate_text_ad.rb +0 -114
  53. data/examples/v201409/error_handling/handle_partial_failures.rb +0 -134
  54. data/examples/v201409/error_handling/handle_policy_violation_error.rb +0 -145
  55. data/examples/v201409/extensions/add_google_my_business_location_extensions.rb +0 -183
  56. data/examples/v201409/extensions/add_site_links.rb +0 -167
  57. data/examples/v201409/extensions/add_site_links_using_feeds.rb +0 -306
  58. data/examples/v201409/migration/migrate_to_extension_settings.rb +0 -392
  59. data/examples/v201409/migration/upgrade_ad_url.rb +0 -97
  60. data/examples/v201409/misc/create_ad_words_session_without_properties_file.rb +0 -94
  61. data/examples/v201409/misc/get_all_images_and_videos.rb +0 -108
  62. data/examples/v201409/misc/setup_oauth2.rb +0 -88
  63. data/examples/v201409/misc/upload_image.rb +0 -97
  64. data/examples/v201409/misc/use_oauth2_jwt.rb +0 -97
  65. data/examples/v201409/optimization/estimate_keyword_traffic.rb +0 -155
  66. data/examples/v201409/optimization/get_keyword_bid_simulations.rb +0 -100
  67. data/examples/v201409/optimization/get_keyword_ideas.rb +0 -130
  68. data/examples/v201409/remarketing/add_audience.rb +0 -122
  69. data/examples/v201409/remarketing/add_conversion_tracker.rb +0 -105
  70. data/examples/v201409/remarketing/add_rule_based_user_lists.rb +0 -171
  71. data/examples/v201409/reporting/download_criteria_report.rb +0 -87
  72. data/examples/v201409/reporting/download_criteria_report_with_awql.rb +0 -86
  73. data/examples/v201409/reporting/get_report_fields.rb +0 -79
  74. data/examples/v201409/reporting/parallel_report_download.rb +0 -171
  75. data/examples/v201409/shopping_campaigns/add_product_partition_tree.rb +0 -269
  76. data/examples/v201409/shopping_campaigns/add_product_scope.rb +0 -133
  77. data/examples/v201409/shopping_campaigns/add_shopping_campaign.rb +0 -131
  78. data/examples/v201409/shopping_campaigns/get_product_category_taxonomy.rb +0 -117
  79. data/examples/v201409/targeting/add_campaign_targeting_criteria.rb +0 -173
  80. data/examples/v201409/targeting/add_demographic_targeting_criteria.rb +0 -116
  81. data/examples/v201409/targeting/get_campaign_targeting_criteria.rb +0 -110
  82. data/examples/v201409/targeting/get_targetable_languages_and_carriers.rb +0 -94
  83. data/examples/v201409/targeting/lookup_location.rb +0 -112
  84. data/lib/adwords_api/v201409/ad_customizer_feed_service.rb +0 -38
  85. data/lib/adwords_api/v201409/ad_customizer_feed_service_registry.rb +0 -46
  86. data/lib/adwords_api/v201409/ad_group_ad_service.rb +0 -50
  87. data/lib/adwords_api/v201409/ad_group_ad_service_registry.rb +0 -46
  88. data/lib/adwords_api/v201409/ad_group_bid_modifier_service.rb +0 -42
  89. data/lib/adwords_api/v201409/ad_group_bid_modifier_service_registry.rb +0 -46
  90. data/lib/adwords_api/v201409/ad_group_criterion_service.rb +0 -46
  91. data/lib/adwords_api/v201409/ad_group_criterion_service_registry.rb +0 -46
  92. data/lib/adwords_api/v201409/ad_group_extension_setting_service.rb +0 -42
  93. data/lib/adwords_api/v201409/ad_group_extension_setting_service_registry.rb +0 -46
  94. data/lib/adwords_api/v201409/ad_group_feed_service.rb +0 -42
  95. data/lib/adwords_api/v201409/ad_group_feed_service_registry.rb +0 -46
  96. data/lib/adwords_api/v201409/ad_group_service.rb +0 -46
  97. data/lib/adwords_api/v201409/ad_group_service_registry.rb +0 -46
  98. data/lib/adwords_api/v201409/ad_param_service.rb +0 -38
  99. data/lib/adwords_api/v201409/ad_param_service_registry.rb +0 -46
  100. data/lib/adwords_api/v201409/adwords_user_list_service.rb +0 -38
  101. data/lib/adwords_api/v201409/adwords_user_list_service_registry.rb +0 -46
  102. data/lib/adwords_api/v201409/bidding_strategy_service.rb +0 -42
  103. data/lib/adwords_api/v201409/bidding_strategy_service_registry.rb +0 -46
  104. data/lib/adwords_api/v201409/budget_order_service.rb +0 -42
  105. data/lib/adwords_api/v201409/budget_order_service_registry.rb +0 -46
  106. data/lib/adwords_api/v201409/budget_service.rb +0 -42
  107. data/lib/adwords_api/v201409/budget_service_registry.rb +0 -46
  108. data/lib/adwords_api/v201409/campaign_ad_extension_service.rb +0 -38
  109. data/lib/adwords_api/v201409/campaign_ad_extension_service_registry.rb +0 -46
  110. data/lib/adwords_api/v201409/campaign_criterion_service.rb +0 -42
  111. data/lib/adwords_api/v201409/campaign_criterion_service_registry.rb +0 -46
  112. data/lib/adwords_api/v201409/campaign_extension_setting_service.rb +0 -42
  113. data/lib/adwords_api/v201409/campaign_extension_setting_service_registry.rb +0 -46
  114. data/lib/adwords_api/v201409/campaign_feed_service.rb +0 -42
  115. data/lib/adwords_api/v201409/campaign_feed_service_registry.rb +0 -46
  116. data/lib/adwords_api/v201409/campaign_service.rb +0 -46
  117. data/lib/adwords_api/v201409/campaign_service_registry.rb +0 -46
  118. data/lib/adwords_api/v201409/campaign_shared_set_service.rb +0 -38
  119. data/lib/adwords_api/v201409/campaign_shared_set_service_registry.rb +0 -47
  120. data/lib/adwords_api/v201409/constant_data_service.rb +0 -66
  121. data/lib/adwords_api/v201409/constant_data_service_registry.rb +0 -46
  122. data/lib/adwords_api/v201409/conversion_tracker_service.rb +0 -38
  123. data/lib/adwords_api/v201409/conversion_tracker_service_registry.rb +0 -46
  124. data/lib/adwords_api/v201409/customer_extension_setting_service.rb +0 -42
  125. data/lib/adwords_api/v201409/customer_extension_setting_service_registry.rb +0 -46
  126. data/lib/adwords_api/v201409/customer_feed_service.rb +0 -42
  127. data/lib/adwords_api/v201409/customer_feed_service_registry.rb +0 -46
  128. data/lib/adwords_api/v201409/customer_service.rb +0 -38
  129. data/lib/adwords_api/v201409/customer_service_registry.rb +0 -46
  130. data/lib/adwords_api/v201409/customer_sync_service.rb +0 -34
  131. data/lib/adwords_api/v201409/customer_sync_service_registry.rb +0 -47
  132. data/lib/adwords_api/v201409/data_service.rb +0 -54
  133. data/lib/adwords_api/v201409/data_service_registry.rb +0 -46
  134. data/lib/adwords_api/v201409/experiment_service.rb +0 -38
  135. data/lib/adwords_api/v201409/experiment_service_registry.rb +0 -46
  136. data/lib/adwords_api/v201409/feed_item_service.rb +0 -42
  137. data/lib/adwords_api/v201409/feed_item_service_registry.rb +0 -46
  138. data/lib/adwords_api/v201409/feed_mapping_service.rb +0 -42
  139. data/lib/adwords_api/v201409/feed_mapping_service_registry.rb +0 -46
  140. data/lib/adwords_api/v201409/feed_service.rb +0 -42
  141. data/lib/adwords_api/v201409/feed_service_registry.rb +0 -46
  142. data/lib/adwords_api/v201409/geo_location_service.rb +0 -34
  143. data/lib/adwords_api/v201409/geo_location_service_registry.rb +0 -46
  144. data/lib/adwords_api/v201409/label_service.rb +0 -42
  145. data/lib/adwords_api/v201409/label_service_registry.rb +0 -46
  146. data/lib/adwords_api/v201409/location_criterion_service.rb +0 -38
  147. data/lib/adwords_api/v201409/location_criterion_service_registry.rb +0 -46
  148. data/lib/adwords_api/v201409/managed_customer_service.rb +0 -50
  149. data/lib/adwords_api/v201409/managed_customer_service_registry.rb +0 -46
  150. data/lib/adwords_api/v201409/media_service.rb +0 -42
  151. data/lib/adwords_api/v201409/media_service_registry.rb +0 -46
  152. data/lib/adwords_api/v201409/mutate_job_service.rb +0 -42
  153. data/lib/adwords_api/v201409/mutate_job_service_registry.rb +0 -46
  154. data/lib/adwords_api/v201409/offline_conversion_feed_service.rb +0 -34
  155. data/lib/adwords_api/v201409/offline_conversion_feed_service_registry.rb +0 -46
  156. data/lib/adwords_api/v201409/report_definition_service.rb +0 -34
  157. data/lib/adwords_api/v201409/report_definition_service_registry.rb +0 -46
  158. data/lib/adwords_api/v201409/shared_criterion_service.rb +0 -38
  159. data/lib/adwords_api/v201409/shared_criterion_service_registry.rb +0 -47
  160. data/lib/adwords_api/v201409/shared_set_service.rb +0 -38
  161. data/lib/adwords_api/v201409/shared_set_service_registry.rb +0 -47
  162. data/lib/adwords_api/v201409/targeting_idea_service.rb +0 -34
  163. data/lib/adwords_api/v201409/targeting_idea_service_registry.rb +0 -46
  164. data/lib/adwords_api/v201409/traffic_estimator_service.rb +0 -34
  165. data/lib/adwords_api/v201409/traffic_estimator_service_registry.rb +0 -46
  166. data/test/templates/v201409/basic_operations_get_campaigns.def +0 -116
  167. data/test/templates/v201409/misc_use_oauth2_jwt.def +0 -131
@@ -1,117 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This code example imports offline conversion values for specific clicks to
22
- # your account. To get Google Click ID for a click, run
23
- # CLICK_PERFORMANCE_REPORT.
24
- #
25
- # Tags: ConversionTrackerService.mutate, OfflineConversionFeedService.mutate
26
-
27
- require 'adwords_api'
28
- require 'date'
29
-
30
- def upload_offline_conversions(conversion_name, google_click_id,
31
- conversion_time, conversion_value)
32
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
33
- # when called without parameters.
34
- adwords = AdwordsApi::Api.new
35
-
36
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
37
- # the configuration file or provide your own logger:
38
- # adwords.logger = Logger.new('adwords_xml.log')
39
-
40
- conversion_tracker_srv =
41
- adwords.service(:ConversionTrackerService, API_VERSION)
42
- conversion_feed_srv =
43
- adwords.service(:OfflineConversionFeedService, API_VERSION)
44
-
45
- # Create an upload conversion. Once created, this entry will be visible under
46
- # Tools and Analysis->Conversion and will have Source = Import.
47
- upload_conversion = {
48
- :xsi_type => 'UploadConversion',
49
- :category => 'PAGE_VIEW',
50
- :name => conversion_name,
51
- :viewthrough_lookback_window => 30,
52
- :ctc_lookback_window => 90
53
- }
54
- return_conversions = conversion_tracker_srv.mutate([
55
- {:operator => 'ADD', :operand => upload_conversion}])
56
- return_conversions[:value].each do |tracker|
57
- puts "Upload conversion tracker with name '%s' and ID %d was created." %
58
- [tracker[:name], tracker[:id]]
59
- end
60
-
61
- # Associate offline conversions with the upload conversion tracker we created.
62
- feed = {
63
- :conversion_name => conversion_name,
64
- :google_click_id => google_click_id,
65
- :conversion_time => conversion_time,
66
- :conversion_value => conversion_value
67
- }
68
- return_feeds = conversion_feed_srv.mutate([
69
- {:operator => 'ADD', :operand => feed}])
70
- return_feeds[:value].each do |return_feed|
71
- puts ("Uploaded offline conversion value %.2f for Google Click ID '%s', " +
72
- 'to %s') % [return_feed[:conversion_value],
73
- return_feed[:google_click_id],
74
- return_feed[:conversion_name]]
75
- end
76
- end
77
-
78
- if __FILE__ == $0
79
- API_VERSION = :v201409
80
-
81
- begin
82
- # Name of the upload conversion to be created.
83
- conversion_name = 'INSERT_CONVERSION_NAME_HERE'
84
- # Google Click ID of the click for which offline conversions are uploaded.
85
- google_click_id = 'INSERT_GOOGLE_CLICK_ID_HERE'
86
- # Conversion time in 'yyyymmdd hhmmss' format.
87
- conversion_time = Time.new.strftime("%Y%m%d %H%M%S")
88
- # Conversion value to be uploaded.
89
- conversion_value = 'INSERT_CONVERSION_VALUE_HERE'.to_f
90
-
91
- upload_offline_conversions(conversion_name, google_click_id,
92
- conversion_time, conversion_value)
93
-
94
- # Authorization error.
95
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
96
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
97
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
98
- "to retrieve and store OAuth2 tokens."
99
- puts "See this wiki page for more details:\n\n " +
100
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
101
-
102
- # HTTP errors.
103
- rescue AdsCommon::Errors::HttpError => e
104
- puts "HTTP Error: %s" % e
105
-
106
- # API errors.
107
- rescue AdwordsApi::Errors::ApiException => e
108
- puts "Message: %s" % e.message
109
- puts 'Errors:'
110
- e.errors.each_with_index do |error, index|
111
- puts "\tError [%d]:" % (index + 1)
112
- error.each do |field, value|
113
- puts "\t\t%s: %s" % [field, value]
114
- end
115
- end
116
- end
117
- end
@@ -1,152 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Encoding: utf-8
3
- #
4
- # Author:: api.dklimkin@gmail.com (Danial Klimkin)
5
- #
6
- # Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
7
- #
8
- # License:: Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17
- # implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
- # This example adds a Shared Bidding Strategy and uses it to construct a
22
- # campaign.
23
- #
24
- # Tags: BiddingStrategyService.mutate, CampaignService.mutate
25
- # Tags: BudgetService.mutate
26
-
27
- require 'adwords_api'
28
- require 'date'
29
-
30
- def use_shared_bidding_strategy()
31
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
32
- # when called without parameters.
33
- adwords = AdwordsApi::Api.new
34
-
35
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
36
- # the configuration file or provide your own logger:
37
- # adwords.logger = Logger.new('adwords_xml.log')
38
-
39
- budget_srv = adwords.service(:BudgetService, API_VERSION)
40
- bidding_srv = adwords.service(:BiddingStrategyService, API_VERSION)
41
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
42
-
43
- # Create a budget, which can be shared by multiple campaigns.
44
- budget = {
45
- :name => 'Interplanetary budget #%d' % (Time.new.to_f * 1000).to_i,
46
- :amount => {:micro_amount => 50000000},
47
- :delivery_method => 'STANDARD',
48
- :period => 'DAILY',
49
- :is_explicitly_shared => true
50
- }
51
- return_budget = budget_srv.mutate([
52
- {:operator => 'ADD', :operand => budget}])
53
- budget_id = return_budget[:value].first[:budget_id]
54
-
55
- # Create a shared bidding strategy.
56
- shared_bidding_strategy = {
57
- :name => 'Maximize Clicks #%d' % (Time.new.to_f * 1000).to_i,
58
- :bidding_scheme => {
59
- :xsi_type => 'TargetSpendBiddingScheme',
60
- # Optionally set additional bidding scheme parameters.
61
- :bid_ceiling => {:micro_amount => 20000000},
62
- :spend_target => {:micro_amount => 40000000}
63
- }
64
- }
65
- return_strategy = bidding_srv.mutate([
66
- {:operator => 'ADD', :operand => shared_bidding_strategy}])
67
-
68
- bidding_strategy = return_strategy[:value].first
69
- puts ("Shared bidding strategy with name '%s' and ID %d of type '%s' was " +
70
- 'created') %
71
- [bidding_strategy[:name], bidding_strategy[:id], bidding_strategy[:type]]
72
-
73
- # Create campaigns.
74
- campaigns = [
75
- {
76
- :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
77
- :status => 'PAUSED',
78
- :bidding_strategy_configuration => {
79
- :bidding_strategy_id => bidding_strategy[:id]
80
- },
81
- # Budget (required) - note only the budget ID is required.
82
- :budget => {:budget_id => budget_id},
83
- :advertising_channel_type => 'SEARCH',
84
- :network_setting => {
85
- :target_google_search => true,
86
- :target_search_network => true,
87
- :target_content_network => true
88
- }
89
- },
90
- {
91
- :name => "Interplanetary Cruise banner #%d" % (Time.new.to_f * 1000).to_i,
92
- :status => 'PAUSED',
93
- :bidding_strategy_configuration => {
94
- :bidding_strategy_id => bidding_strategy[:id]
95
- },
96
- :budget => {:budget_id => budget_id},
97
- :advertising_channel_type => 'DISPLAY',
98
- :network_setting => {
99
- :target_google_search => false,
100
- :target_search_network => false,
101
- :target_content_network => true
102
- }
103
- }
104
- ]
105
-
106
- # Prepare for adding campaign.
107
- operations = campaigns.map do |campaign|
108
- {:operator => 'ADD', :operand => campaign}
109
- end
110
-
111
- # Add campaign.
112
- response = campaign_srv.mutate(operations)
113
- if response and response[:value]
114
- response[:value].each do |campaign|
115
- puts "Campaign with name '%s' and ID %d was added." %
116
- [campaign[:name], campaign[:id]]
117
- end
118
- else
119
- raise new StandardError, 'No campaigns were added.'
120
- end
121
- end
122
-
123
- if __FILE__ == $0
124
- API_VERSION = :v201409
125
-
126
- begin
127
- use_shared_bidding_strategy()
128
-
129
- # Authorization error.
130
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
131
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
132
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
133
- "to retrieve and store OAuth2 tokens."
134
- puts "See this wiki page for more details:\n\n " +
135
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
136
-
137
- # HTTP errors.
138
- rescue AdsCommon::Errors::HttpError => e
139
- puts "HTTP Error: %s" % e
140
-
141
- # API errors.
142
- rescue AdwordsApi::Errors::ApiException => e
143
- puts "Message: %s" % e.message
144
- puts 'Errors:'
145
- e.errors.each_with_index do |error, index|
146
- puts "\tError [%d]:" % (index + 1)
147
- error.each do |field, value|
148
- puts "\t\t%s: %s" % [field, value]
149
- end
150
- end
151
- end
152
- end
@@ -1,144 +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 illustrates how to create ad groups. To get a list of existing
22
- # campaigns run get_campaigns.rb.
23
- #
24
- # Tags: AdGroupService.mutate
25
-
26
- require 'adwords_api'
27
-
28
- def add_ad_groups(campaign_id)
29
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
30
- # when called without parameters.
31
- adwords = AdwordsApi::Api.new
32
-
33
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
- # the configuration file or provide your own logger:
35
- # adwords.logger = Logger.new('adwords_xml.log')
36
-
37
- ad_group_srv = adwords.service(:AdGroupService, API_VERSION)
38
-
39
- ad_groups = [
40
- {
41
- :name => "Earth to Mars Cruises #%d" % (Time.new.to_f * 1000).to_i,
42
- :status => 'ENABLED',
43
- :campaign_id => campaign_id,
44
- :bidding_strategy_configuration => {
45
- :bids => [
46
- {
47
- # The 'xsi_type' field allows you to specify the xsi:type of the
48
- # object being created. It's only necessary when you must provide
49
- # an explicit type that the client library can't infer.
50
- :xsi_type => 'CpcBid',
51
- :bid => {:micro_amount => 10000000}
52
- }
53
- ]
54
- },
55
- :settings => [
56
- # Targeting restriction settings - these settings only affect serving
57
- # for the Display Network.
58
- {
59
- :xsi_type => 'TargetingSetting',
60
- :details => [
61
- # Restricting to serve ads that match your ad group placements.
62
- # This is equivalent to choosing "Target and bid" in the UI.
63
- {
64
- :xsi_type => 'TargetingSettingDetail',
65
- :criterion_type_group => 'PLACEMENT',
66
- :target_all => false
67
- },
68
- # Using your ad group verticals only for bidding. This is equivalent
69
- # to choosing "Bid only" in the UI.
70
- {
71
- :xsi_type => 'TargetingSettingDetail',
72
- :criterion_type_group => 'VERTICAL',
73
- :target_all => true
74
- }
75
- ]
76
- }
77
- ]
78
- },
79
- {
80
- :name => 'Earth to Pluto Cruises #%d' % (Time.new.to_f * 1000).to_i,
81
- :status => 'ENABLED',
82
- :campaign_id => campaign_id,
83
- :bidding_strategy_configuration => {
84
- :bids => [
85
- {
86
- # The 'xsi_type' field allows you to specify the xsi:type of the
87
- # object being created. It's only necessary when you must provide
88
- # an explicit type that the client library can't infer.
89
- :xsi_type => 'CpcBid',
90
- :bid => {:micro_amount => 10000000}
91
- }
92
- ]
93
- }
94
- }
95
- ]
96
-
97
- # Prepare operations for adding ad groups.
98
- operations = ad_groups.map do |ad_group|
99
- {:operator => 'ADD', :operand => ad_group}
100
- end
101
-
102
- # Add ad groups.
103
- response = ad_group_srv.mutate(operations)
104
- if response and response[:value]
105
- response[:value].each do |ad_group|
106
- puts "Ad group ID %d was successfully added." % ad_group[:id]
107
- end
108
- else
109
- raise StandardError, 'No ad group was added'
110
- end
111
- end
112
-
113
- if __FILE__ == $0
114
- API_VERSION = :v201409
115
-
116
- begin
117
- # Campaign ID to add ad group to.
118
- campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
119
- add_ad_groups(campaign_id)
120
-
121
- # Authorization error.
122
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
123
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
124
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
125
- "to retrieve and store OAuth2 tokens."
126
- puts "See this wiki page for more details:\n\n " +
127
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
128
-
129
- # HTTP errors.
130
- rescue AdsCommon::Errors::HttpError => e
131
- puts "HTTP Error: %s" % e
132
-
133
- # API errors.
134
- rescue AdwordsApi::Errors::ApiException => e
135
- puts "Message: %s" % e.message
136
- puts 'Errors:'
137
- e.errors.each_with_index do |error, index|
138
- puts "\tError [%d]:" % (index + 1)
139
- error.each do |field, value|
140
- puts "\t\t%s: %s" % [field, value]
141
- end
142
- end
143
- end
144
- end
@@ -1,143 +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 illustrates how to create campaigns.
22
- #
23
- # Tags: CampaignService.mutate, BudgetService.mutate
24
-
25
- require 'adwords_api'
26
- require 'date'
27
-
28
- def add_campaigns()
29
- # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
30
- # when called without parameters.
31
- adwords = AdwordsApi::Api.new
32
-
33
- # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
34
- # the configuration file or provide your own logger:
35
- # adwords.logger = Logger.new('adwords_xml.log')
36
-
37
- budget_srv = adwords.service(:BudgetService, API_VERSION)
38
- campaign_srv = adwords.service(:CampaignService, API_VERSION)
39
-
40
- # Create a budget, which can be shared by multiple campaigns.
41
- budget = {
42
- :name => 'Interplanetary budget #%d' % (Time.new.to_f * 1000).to_i,
43
- :amount => {:micro_amount => 50000000},
44
- :delivery_method => 'STANDARD',
45
- :period => 'DAILY'
46
- }
47
- budget_operation = {:operator => 'ADD', :operand => budget}
48
-
49
- # Add budget.
50
- return_budget = budget_srv.mutate([budget_operation])
51
- budget_id = return_budget[:value].first[:budget_id]
52
-
53
- # Create campaigns.
54
- campaigns = [
55
- {
56
- :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
57
- :status => 'PAUSED',
58
- :bidding_strategy_configuration => {
59
- :bidding_strategy_type => 'MANUAL_CPC'
60
- },
61
- # Budget (required) - note only the budget ID is required.
62
- :budget => {:budget_id => budget_id},
63
- :advertising_channel_type => 'SEARCH',
64
- # Optional fields:
65
- :start_date =>
66
- DateTime.parse((Date.today + 1).to_s).strftime('%Y%m%d'),
67
- :ad_serving_optimization_status => 'ROTATE',
68
- :network_setting => {
69
- :target_google_search => true,
70
- :target_search_network => true,
71
- :target_content_network => true
72
- },
73
- :settings => [
74
- {
75
- :xsi_type => 'GeoTargetTypeSetting',
76
- :positive_geo_target_type => 'DONT_CARE',
77
- :negative_geo_target_type => 'DONT_CARE'
78
- }
79
- ],
80
- :frequency_cap => {
81
- :impressions => '5',
82
- :time_unit => 'DAY',
83
- :level => 'ADGROUP'
84
- }
85
- },
86
- {
87
- :name => "Interplanetary Cruise banner #%d" % (Time.new.to_f * 1000).to_i,
88
- :status => 'PAUSED',
89
- :bidding_strategy_configuration => {
90
- :bidding_strategy_type => 'MANUAL_CPC'
91
- },
92
- :budget => {:budget_id => budget_id},
93
- :advertising_channel_type => 'DISPLAY'
94
- }
95
- ]
96
-
97
- # Prepare for adding campaign.
98
- operations = campaigns.map do |campaign|
99
- {:operator => 'ADD', :operand => campaign}
100
- end
101
-
102
- # Add campaign.
103
- response = campaign_srv.mutate(operations)
104
- if response and response[:value]
105
- response[:value].each do |campaign|
106
- puts "Campaign with name '%s' and ID %d was added." %
107
- [campaign[:name], campaign[:id]]
108
- end
109
- else
110
- raise new StandardError, 'No campaigns were added.'
111
- end
112
- end
113
-
114
- if __FILE__ == $0
115
- API_VERSION = :v201409
116
-
117
- begin
118
- add_campaigns()
119
-
120
- # Authorization error.
121
- rescue AdsCommon::Errors::OAuth2VerificationRequired => e
122
- puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
123
- "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
124
- "to retrieve and store OAuth2 tokens."
125
- puts "See this wiki page for more details:\n\n " +
126
- 'http://code.google.com/p/google-api-ads-ruby/wiki/OAuth2'
127
-
128
- # HTTP errors.
129
- rescue AdsCommon::Errors::HttpError => e
130
- puts "HTTP Error: %s" % e
131
-
132
- # API errors.
133
- rescue AdwordsApi::Errors::ApiException => e
134
- puts "Message: %s" % e.message
135
- puts 'Errors:'
136
- e.errors.each_with_index do |error, index|
137
- puts "\tError [%d]:" % (index + 1)
138
- error.each do |field, value|
139
- puts "\t\t%s: %s" % [field, value]
140
- end
141
- end
142
- end
143
- end