google-adwords-api 0.19.0 → 0.19.1

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 (461) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +0 -0
  3. data/ChangeLog +6 -1
  4. data/README.md +0 -0
  5. data/adwords_api.yml +0 -0
  6. data/examples/v201509/misc/setup_oauth2.rb +1 -1
  7. data/examples/v201509/misc/use_oauth2_jwt.rb +1 -1
  8. data/examples/v201601/misc/setup_oauth2.rb +1 -1
  9. data/examples/v201601/misc/use_oauth2_jwt.rb +1 -1
  10. data/examples/v201603/campaign_management/add_draft.rb +0 -0
  11. data/examples/v201603/campaign_management/add_trial.rb +0 -0
  12. data/examples/v201603/campaign_management/graduate_trial.rb +0 -0
  13. data/examples/v201603/misc/setup_oauth2.rb +1 -1
  14. data/examples/v201603/misc/use_oauth2_jwt.rb +1 -1
  15. data/examples/v201605/account_management/create_account.rb +88 -0
  16. data/examples/v201605/account_management/get_account_changes.rb +135 -0
  17. data/examples/v201605/account_management/get_account_hierarchy.rb +132 -0
  18. data/examples/v201605/advanced_operations/add_ad_customizers.rb +184 -0
  19. data/examples/v201605/advanced_operations/add_ad_group_bid_modifier.rb +101 -0
  20. data/examples/v201605/advanced_operations/add_click_to_download_ad.rb +133 -0
  21. data/examples/v201605/advanced_operations/add_html5_ad.rb +137 -0
  22. data/examples/v201605/advanced_operations/add_responsive_display_ad.rb +126 -0
  23. data/examples/v201605/advanced_operations/add_text_ad_with_upgraded_urls.rb +134 -0
  24. data/examples/v201605/advanced_operations/create_and_attach_shared_keyword_set.rb +141 -0
  25. data/examples/v201605/advanced_operations/find_and_remove_criteria_from_shared_set.rb +174 -0
  26. data/examples/v201605/advanced_operations/get_ad_group_bid_modifiers.rb +102 -0
  27. data/examples/v201605/advanced_operations/use_portfolio_bidding_strategy.rb +146 -0
  28. data/examples/v201605/basic_operations/add_ad_groups.rb +142 -0
  29. data/examples/v201605/basic_operations/add_campaigns.rb +138 -0
  30. data/examples/v201605/basic_operations/add_expanded_text_ads.rb +108 -0
  31. data/examples/v201605/basic_operations/add_keywords.rb +114 -0
  32. data/examples/v201605/basic_operations/add_text_ads.rb +109 -0
  33. data/examples/v201605/basic_operations/get_ad_groups.rb +102 -0
  34. data/examples/v201605/basic_operations/get_campaigns.rb +97 -0
  35. data/examples/v201605/basic_operations/get_campaigns_with_awql.rb +89 -0
  36. data/examples/v201605/basic_operations/get_expanded_text_ads.rb +122 -0
  37. data/examples/v201605/basic_operations/get_keywords.rb +109 -0
  38. data/examples/v201605/basic_operations/get_text_ads.rb +110 -0
  39. data/examples/v201605/basic_operations/pause_ad.rb +88 -0
  40. data/examples/v201605/basic_operations/remove_ad.rb +89 -0
  41. data/examples/v201605/basic_operations/remove_ad_group.rb +85 -0
  42. data/examples/v201605/basic_operations/remove_campaign.rb +87 -0
  43. data/examples/v201605/basic_operations/remove_keyword.rb +94 -0
  44. data/examples/v201605/basic_operations/update_ad_group.rb +85 -0
  45. data/examples/v201605/basic_operations/update_campaign.rb +86 -0
  46. data/examples/v201605/basic_operations/update_keyword.rb +106 -0
  47. data/examples/v201605/campaign_management/add_campaign_labels.rb +82 -0
  48. data/examples/v201605/campaign_management/add_complete_campaigns_using_batch_job.rb +355 -0
  49. data/examples/v201605/campaign_management/add_draft.rb +114 -0
  50. data/examples/v201605/campaign_management/add_experiment.rb +162 -0
  51. data/examples/v201605/campaign_management/add_keywords_using_incremental_batch_job.rb +210 -0
  52. data/examples/v201605/campaign_management/add_trial.rb +142 -0
  53. data/examples/v201605/campaign_management/get_all_disapproved_ads.rb +97 -0
  54. data/examples/v201605/campaign_management/get_all_disapproved_ads_with_awql.rb +89 -0
  55. data/examples/v201605/campaign_management/get_campaigns_by_label.rb +108 -0
  56. data/examples/v201605/campaign_management/graduate_trial.rb +106 -0
  57. data/examples/v201605/campaign_management/promote_experiment.rb +81 -0
  58. data/examples/v201605/campaign_management/set_ad_parameters.rb +118 -0
  59. data/examples/v201605/campaign_management/set_criterion_bid_modifier.rb +104 -0
  60. data/examples/v201605/campaign_management/validate_text_ad.rb +110 -0
  61. data/examples/v201605/error_handling/handle_partial_failures.rb +130 -0
  62. data/examples/v201605/error_handling/handle_policy_violation_error.rb +141 -0
  63. data/examples/v201605/extensions/add_google_my_business_location_extensions.rb +193 -0
  64. data/examples/v201605/extensions/add_site_links.rb +184 -0
  65. data/examples/v201605/extensions/add_site_links_using_feeds.rb +281 -0
  66. data/examples/v201605/migration/migrate_to_extension_settings.rb +386 -0
  67. data/examples/v201605/migration/upgrade_ad_url.rb +93 -0
  68. data/examples/v201605/misc/get_all_images_and_videos.rb +104 -0
  69. data/examples/v201605/misc/setup_oauth2.rb +84 -0
  70. data/examples/v201605/misc/upload_image.rb +93 -0
  71. data/examples/v201605/misc/upload_media_bundle.rb +90 -0
  72. data/examples/v201605/misc/use_oauth2_jwt.rb +93 -0
  73. data/examples/v201605/misc/use_runtime_config.rb +92 -0
  74. data/examples/v201605/optimization/estimate_keyword_traffic.rb +191 -0
  75. data/examples/v201605/optimization/get_campaign_criterion_bid_modifier_simulations.rb +128 -0
  76. data/examples/v201605/optimization/get_keyword_bid_simulations.rb +95 -0
  77. data/examples/v201605/optimization/get_keyword_ideas.rb +136 -0
  78. data/examples/v201605/remarketing/add_audience.rb +118 -0
  79. data/examples/v201605/remarketing/add_conversion_tracker.rb +97 -0
  80. data/examples/v201605/remarketing/add_crm_based_user_list.rb +116 -0
  81. data/examples/v201605/remarketing/add_rule_based_user_lists.rb +167 -0
  82. data/examples/v201605/remarketing/upload_offline_conversions.rb +98 -0
  83. data/examples/v201605/reporting/download_criteria_report.rb +92 -0
  84. data/examples/v201605/reporting/download_criteria_report_with_awql.rb +93 -0
  85. data/examples/v201605/reporting/get_report_fields.rb +75 -0
  86. data/examples/v201605/reporting/parallel_report_download.rb +164 -0
  87. data/examples/v201605/reporting/stream_criteria_report_results.rb +97 -0
  88. data/examples/v201605/shopping_campaigns/add_product_partition_tree.rb +267 -0
  89. data/examples/v201605/shopping_campaigns/add_product_scope.rb +129 -0
  90. data/examples/v201605/shopping_campaigns/add_shopping_campaign.rb +129 -0
  91. data/examples/v201605/shopping_campaigns/get_product_category_taxonomy.rb +115 -0
  92. data/examples/v201605/targeting/add_campaign_targeting_criteria.rb +180 -0
  93. data/examples/v201605/targeting/add_demographic_targeting_criteria.rb +112 -0
  94. data/examples/v201605/targeting/get_campaign_targeting_criteria.rb +106 -0
  95. data/examples/v201605/targeting/get_targetable_languages_and_carriers.rb +89 -0
  96. data/examples/v201605/targeting/lookup_location.rb +108 -0
  97. data/lib/adwords_api.rb +10 -1
  98. data/lib/adwords_api/api_config.rb +96 -4
  99. data/lib/adwords_api/batch_job_utils.rb +0 -0
  100. data/lib/adwords_api/credential_handler.rb +0 -0
  101. data/lib/adwords_api/errors.rb +0 -0
  102. data/lib/adwords_api/incremental_upload_helper.rb +0 -0
  103. data/lib/adwords_api/report_header_handler.rb +9 -4
  104. data/lib/adwords_api/report_stream.rb +2 -2
  105. data/lib/adwords_api/report_utils.rb +0 -0
  106. data/lib/adwords_api/utils.rb +0 -0
  107. data/lib/adwords_api/utils_reporter.rb +0 -0
  108. data/lib/adwords_api/v201509/account_label_service.rb +0 -0
  109. data/lib/adwords_api/v201509/account_label_service_registry.rb +0 -0
  110. data/lib/adwords_api/v201509/ad_customizer_feed_service.rb +0 -0
  111. data/lib/adwords_api/v201509/ad_customizer_feed_service_registry.rb +0 -0
  112. data/lib/adwords_api/v201509/ad_group_ad_service.rb +0 -0
  113. data/lib/adwords_api/v201509/ad_group_ad_service_registry.rb +0 -0
  114. data/lib/adwords_api/v201509/ad_group_bid_modifier_service.rb +0 -0
  115. data/lib/adwords_api/v201509/ad_group_bid_modifier_service_registry.rb +0 -0
  116. data/lib/adwords_api/v201509/ad_group_criterion_service.rb +0 -0
  117. data/lib/adwords_api/v201509/ad_group_criterion_service_registry.rb +0 -0
  118. data/lib/adwords_api/v201509/ad_group_extension_setting_service.rb +0 -0
  119. data/lib/adwords_api/v201509/ad_group_extension_setting_service_registry.rb +0 -0
  120. data/lib/adwords_api/v201509/ad_group_feed_service.rb +0 -0
  121. data/lib/adwords_api/v201509/ad_group_feed_service_registry.rb +0 -0
  122. data/lib/adwords_api/v201509/ad_group_service.rb +0 -0
  123. data/lib/adwords_api/v201509/ad_group_service_registry.rb +0 -0
  124. data/lib/adwords_api/v201509/ad_param_service.rb +0 -0
  125. data/lib/adwords_api/v201509/ad_param_service_registry.rb +0 -0
  126. data/lib/adwords_api/v201509/adwords_user_list_service.rb +0 -0
  127. data/lib/adwords_api/v201509/adwords_user_list_service_registry.rb +0 -0
  128. data/lib/adwords_api/v201509/batch_job_service.rb +0 -0
  129. data/lib/adwords_api/v201509/batch_job_service_registry.rb +0 -0
  130. data/lib/adwords_api/v201509/bidding_strategy_service.rb +0 -0
  131. data/lib/adwords_api/v201509/bidding_strategy_service_registry.rb +0 -0
  132. data/lib/adwords_api/v201509/budget_order_service.rb +0 -0
  133. data/lib/adwords_api/v201509/budget_order_service_registry.rb +0 -0
  134. data/lib/adwords_api/v201509/budget_service.rb +0 -0
  135. data/lib/adwords_api/v201509/budget_service_registry.rb +0 -0
  136. data/lib/adwords_api/v201509/campaign_criterion_service.rb +0 -0
  137. data/lib/adwords_api/v201509/campaign_criterion_service_registry.rb +0 -0
  138. data/lib/adwords_api/v201509/campaign_extension_setting_service.rb +0 -0
  139. data/lib/adwords_api/v201509/campaign_extension_setting_service_registry.rb +0 -0
  140. data/lib/adwords_api/v201509/campaign_feed_service.rb +0 -0
  141. data/lib/adwords_api/v201509/campaign_feed_service_registry.rb +0 -0
  142. data/lib/adwords_api/v201509/campaign_service.rb +0 -0
  143. data/lib/adwords_api/v201509/campaign_service_registry.rb +0 -0
  144. data/lib/adwords_api/v201509/campaign_shared_set_service.rb +0 -0
  145. data/lib/adwords_api/v201509/campaign_shared_set_service_registry.rb +0 -0
  146. data/lib/adwords_api/v201509/constant_data_service.rb +0 -0
  147. data/lib/adwords_api/v201509/constant_data_service_registry.rb +0 -0
  148. data/lib/adwords_api/v201509/conversion_tracker_service.rb +0 -0
  149. data/lib/adwords_api/v201509/conversion_tracker_service_registry.rb +0 -0
  150. data/lib/adwords_api/v201509/customer_extension_setting_service.rb +0 -0
  151. data/lib/adwords_api/v201509/customer_extension_setting_service_registry.rb +0 -0
  152. data/lib/adwords_api/v201509/customer_feed_service.rb +0 -0
  153. data/lib/adwords_api/v201509/customer_feed_service_registry.rb +0 -0
  154. data/lib/adwords_api/v201509/customer_service.rb +0 -0
  155. data/lib/adwords_api/v201509/customer_service_registry.rb +0 -0
  156. data/lib/adwords_api/v201509/customer_sync_service.rb +0 -0
  157. data/lib/adwords_api/v201509/customer_sync_service_registry.rb +0 -0
  158. data/lib/adwords_api/v201509/data_service.rb +0 -0
  159. data/lib/adwords_api/v201509/data_service_registry.rb +0 -0
  160. data/lib/adwords_api/v201509/experiment_service.rb +0 -0
  161. data/lib/adwords_api/v201509/experiment_service_registry.rb +0 -0
  162. data/lib/adwords_api/v201509/feed_item_service.rb +0 -0
  163. data/lib/adwords_api/v201509/feed_item_service_registry.rb +0 -0
  164. data/lib/adwords_api/v201509/feed_mapping_service.rb +0 -0
  165. data/lib/adwords_api/v201509/feed_mapping_service_registry.rb +0 -0
  166. data/lib/adwords_api/v201509/feed_service.rb +0 -0
  167. data/lib/adwords_api/v201509/feed_service_registry.rb +0 -0
  168. data/lib/adwords_api/v201509/label_service.rb +0 -0
  169. data/lib/adwords_api/v201509/label_service_registry.rb +0 -0
  170. data/lib/adwords_api/v201509/location_criterion_service.rb +0 -0
  171. data/lib/adwords_api/v201509/location_criterion_service_registry.rb +0 -0
  172. data/lib/adwords_api/v201509/managed_customer_service.rb +0 -0
  173. data/lib/adwords_api/v201509/managed_customer_service_registry.rb +0 -0
  174. data/lib/adwords_api/v201509/media_service.rb +0 -0
  175. data/lib/adwords_api/v201509/media_service_registry.rb +0 -0
  176. data/lib/adwords_api/v201509/mutate_job_service.rb +0 -0
  177. data/lib/adwords_api/v201509/mutate_job_service_registry.rb +0 -0
  178. data/lib/adwords_api/v201509/offline_conversion_feed_service.rb +0 -0
  179. data/lib/adwords_api/v201509/offline_conversion_feed_service_registry.rb +0 -0
  180. data/lib/adwords_api/v201509/report_definition_service.rb +0 -0
  181. data/lib/adwords_api/v201509/report_definition_service_registry.rb +0 -0
  182. data/lib/adwords_api/v201509/shared_criterion_service.rb +0 -0
  183. data/lib/adwords_api/v201509/shared_criterion_service_registry.rb +0 -0
  184. data/lib/adwords_api/v201509/shared_set_service.rb +0 -0
  185. data/lib/adwords_api/v201509/shared_set_service_registry.rb +0 -0
  186. data/lib/adwords_api/v201509/targeting_idea_service.rb +0 -0
  187. data/lib/adwords_api/v201509/targeting_idea_service_registry.rb +0 -0
  188. data/lib/adwords_api/v201509/traffic_estimator_service.rb +0 -0
  189. data/lib/adwords_api/v201509/traffic_estimator_service_registry.rb +0 -0
  190. data/lib/adwords_api/v201601/account_label_service.rb +0 -0
  191. data/lib/adwords_api/v201601/account_label_service_registry.rb +0 -0
  192. data/lib/adwords_api/v201601/ad_customizer_feed_service.rb +0 -0
  193. data/lib/adwords_api/v201601/ad_customizer_feed_service_registry.rb +0 -0
  194. data/lib/adwords_api/v201601/ad_group_ad_service.rb +0 -0
  195. data/lib/adwords_api/v201601/ad_group_ad_service_registry.rb +0 -0
  196. data/lib/adwords_api/v201601/ad_group_bid_modifier_service.rb +0 -0
  197. data/lib/adwords_api/v201601/ad_group_bid_modifier_service_registry.rb +0 -0
  198. data/lib/adwords_api/v201601/ad_group_criterion_service.rb +0 -0
  199. data/lib/adwords_api/v201601/ad_group_criterion_service_registry.rb +0 -0
  200. data/lib/adwords_api/v201601/ad_group_extension_setting_service.rb +0 -0
  201. data/lib/adwords_api/v201601/ad_group_extension_setting_service_registry.rb +0 -0
  202. data/lib/adwords_api/v201601/ad_group_feed_service.rb +0 -0
  203. data/lib/adwords_api/v201601/ad_group_feed_service_registry.rb +0 -0
  204. data/lib/adwords_api/v201601/ad_group_service.rb +0 -0
  205. data/lib/adwords_api/v201601/ad_group_service_registry.rb +0 -0
  206. data/lib/adwords_api/v201601/ad_param_service.rb +0 -0
  207. data/lib/adwords_api/v201601/ad_param_service_registry.rb +0 -0
  208. data/lib/adwords_api/v201601/adwords_user_list_service.rb +0 -0
  209. data/lib/adwords_api/v201601/adwords_user_list_service_registry.rb +0 -0
  210. data/lib/adwords_api/v201601/batch_job_service.rb +0 -0
  211. data/lib/adwords_api/v201601/batch_job_service_registry.rb +0 -0
  212. data/lib/adwords_api/v201601/bidding_strategy_service.rb +0 -0
  213. data/lib/adwords_api/v201601/bidding_strategy_service_registry.rb +0 -0
  214. data/lib/adwords_api/v201601/budget_order_service.rb +0 -0
  215. data/lib/adwords_api/v201601/budget_order_service_registry.rb +0 -0
  216. data/lib/adwords_api/v201601/budget_service.rb +0 -0
  217. data/lib/adwords_api/v201601/budget_service_registry.rb +0 -0
  218. data/lib/adwords_api/v201601/campaign_criterion_service.rb +0 -0
  219. data/lib/adwords_api/v201601/campaign_criterion_service_registry.rb +0 -0
  220. data/lib/adwords_api/v201601/campaign_extension_setting_service.rb +0 -0
  221. data/lib/adwords_api/v201601/campaign_extension_setting_service_registry.rb +0 -0
  222. data/lib/adwords_api/v201601/campaign_feed_service.rb +0 -0
  223. data/lib/adwords_api/v201601/campaign_feed_service_registry.rb +0 -0
  224. data/lib/adwords_api/v201601/campaign_service.rb +0 -0
  225. data/lib/adwords_api/v201601/campaign_service_registry.rb +0 -0
  226. data/lib/adwords_api/v201601/campaign_shared_set_service.rb +0 -0
  227. data/lib/adwords_api/v201601/campaign_shared_set_service_registry.rb +0 -0
  228. data/lib/adwords_api/v201601/constant_data_service.rb +0 -0
  229. data/lib/adwords_api/v201601/constant_data_service_registry.rb +0 -0
  230. data/lib/adwords_api/v201601/conversion_tracker_service.rb +0 -0
  231. data/lib/adwords_api/v201601/conversion_tracker_service_registry.rb +0 -0
  232. data/lib/adwords_api/v201601/customer_extension_setting_service.rb +0 -0
  233. data/lib/adwords_api/v201601/customer_extension_setting_service_registry.rb +0 -0
  234. data/lib/adwords_api/v201601/customer_feed_service.rb +0 -0
  235. data/lib/adwords_api/v201601/customer_feed_service_registry.rb +0 -0
  236. data/lib/adwords_api/v201601/customer_service.rb +0 -0
  237. data/lib/adwords_api/v201601/customer_service_registry.rb +0 -0
  238. data/lib/adwords_api/v201601/customer_sync_service.rb +0 -0
  239. data/lib/adwords_api/v201601/customer_sync_service_registry.rb +0 -0
  240. data/lib/adwords_api/v201601/data_service.rb +0 -0
  241. data/lib/adwords_api/v201601/data_service_registry.rb +0 -0
  242. data/lib/adwords_api/v201601/experiment_service.rb +0 -0
  243. data/lib/adwords_api/v201601/experiment_service_registry.rb +0 -0
  244. data/lib/adwords_api/v201601/feed_item_service.rb +0 -0
  245. data/lib/adwords_api/v201601/feed_item_service_registry.rb +0 -0
  246. data/lib/adwords_api/v201601/feed_mapping_service.rb +0 -0
  247. data/lib/adwords_api/v201601/feed_mapping_service_registry.rb +0 -0
  248. data/lib/adwords_api/v201601/feed_service.rb +0 -0
  249. data/lib/adwords_api/v201601/feed_service_registry.rb +0 -0
  250. data/lib/adwords_api/v201601/label_service.rb +0 -0
  251. data/lib/adwords_api/v201601/label_service_registry.rb +0 -0
  252. data/lib/adwords_api/v201601/location_criterion_service.rb +0 -0
  253. data/lib/adwords_api/v201601/location_criterion_service_registry.rb +0 -0
  254. data/lib/adwords_api/v201601/managed_customer_service.rb +0 -0
  255. data/lib/adwords_api/v201601/managed_customer_service_registry.rb +0 -0
  256. data/lib/adwords_api/v201601/media_service.rb +0 -0
  257. data/lib/adwords_api/v201601/media_service_registry.rb +0 -0
  258. data/lib/adwords_api/v201601/mutate_job_service.rb +0 -0
  259. data/lib/adwords_api/v201601/mutate_job_service_registry.rb +0 -0
  260. data/lib/adwords_api/v201601/offline_conversion_feed_service.rb +0 -0
  261. data/lib/adwords_api/v201601/offline_conversion_feed_service_registry.rb +0 -0
  262. data/lib/adwords_api/v201601/report_definition_service.rb +0 -0
  263. data/lib/adwords_api/v201601/report_definition_service_registry.rb +0 -0
  264. data/lib/adwords_api/v201601/shared_criterion_service.rb +0 -0
  265. data/lib/adwords_api/v201601/shared_criterion_service_registry.rb +0 -0
  266. data/lib/adwords_api/v201601/shared_set_service.rb +0 -0
  267. data/lib/adwords_api/v201601/shared_set_service_registry.rb +0 -0
  268. data/lib/adwords_api/v201601/targeting_idea_service.rb +0 -0
  269. data/lib/adwords_api/v201601/targeting_idea_service_registry.rb +0 -0
  270. data/lib/adwords_api/v201601/traffic_estimator_service.rb +0 -0
  271. data/lib/adwords_api/v201601/traffic_estimator_service_registry.rb +0 -0
  272. data/lib/adwords_api/v201603/account_label_service.rb +0 -0
  273. data/lib/adwords_api/v201603/account_label_service_registry.rb +0 -0
  274. data/lib/adwords_api/v201603/ad_customizer_feed_service.rb +0 -0
  275. data/lib/adwords_api/v201603/ad_customizer_feed_service_registry.rb +0 -0
  276. data/lib/adwords_api/v201603/ad_group_ad_service.rb +0 -0
  277. data/lib/adwords_api/v201603/ad_group_ad_service_registry.rb +0 -0
  278. data/lib/adwords_api/v201603/ad_group_bid_modifier_service.rb +0 -0
  279. data/lib/adwords_api/v201603/ad_group_bid_modifier_service_registry.rb +0 -0
  280. data/lib/adwords_api/v201603/ad_group_criterion_service.rb +0 -0
  281. data/lib/adwords_api/v201603/ad_group_criterion_service_registry.rb +0 -0
  282. data/lib/adwords_api/v201603/ad_group_extension_setting_service.rb +0 -0
  283. data/lib/adwords_api/v201603/ad_group_extension_setting_service_registry.rb +0 -0
  284. data/lib/adwords_api/v201603/ad_group_feed_service.rb +0 -0
  285. data/lib/adwords_api/v201603/ad_group_feed_service_registry.rb +0 -0
  286. data/lib/adwords_api/v201603/ad_group_service.rb +0 -0
  287. data/lib/adwords_api/v201603/ad_group_service_registry.rb +0 -0
  288. data/lib/adwords_api/v201603/ad_param_service.rb +0 -0
  289. data/lib/adwords_api/v201603/ad_param_service_registry.rb +0 -0
  290. data/lib/adwords_api/v201603/adwords_user_list_service.rb +0 -0
  291. data/lib/adwords_api/v201603/adwords_user_list_service_registry.rb +0 -0
  292. data/lib/adwords_api/v201603/batch_job_service.rb +0 -0
  293. data/lib/adwords_api/v201603/batch_job_service_registry.rb +0 -0
  294. data/lib/adwords_api/v201603/bidding_strategy_service.rb +0 -0
  295. data/lib/adwords_api/v201603/bidding_strategy_service_registry.rb +0 -0
  296. data/lib/adwords_api/v201603/budget_order_service.rb +0 -0
  297. data/lib/adwords_api/v201603/budget_order_service_registry.rb +0 -0
  298. data/lib/adwords_api/v201603/budget_service.rb +0 -0
  299. data/lib/adwords_api/v201603/budget_service_registry.rb +0 -0
  300. data/lib/adwords_api/v201603/campaign_criterion_service.rb +0 -0
  301. data/lib/adwords_api/v201603/campaign_criterion_service_registry.rb +0 -0
  302. data/lib/adwords_api/v201603/campaign_extension_setting_service.rb +0 -0
  303. data/lib/adwords_api/v201603/campaign_extension_setting_service_registry.rb +0 -0
  304. data/lib/adwords_api/v201603/campaign_feed_service.rb +0 -0
  305. data/lib/adwords_api/v201603/campaign_feed_service_registry.rb +0 -0
  306. data/lib/adwords_api/v201603/campaign_service.rb +0 -0
  307. data/lib/adwords_api/v201603/campaign_service_registry.rb +0 -0
  308. data/lib/adwords_api/v201603/campaign_shared_set_service.rb +0 -0
  309. data/lib/adwords_api/v201603/campaign_shared_set_service_registry.rb +0 -0
  310. data/lib/adwords_api/v201603/constant_data_service.rb +0 -0
  311. data/lib/adwords_api/v201603/constant_data_service_registry.rb +0 -0
  312. data/lib/adwords_api/v201603/conversion_tracker_service.rb +0 -0
  313. data/lib/adwords_api/v201603/conversion_tracker_service_registry.rb +0 -0
  314. data/lib/adwords_api/v201603/customer_extension_setting_service.rb +0 -0
  315. data/lib/adwords_api/v201603/customer_extension_setting_service_registry.rb +0 -0
  316. data/lib/adwords_api/v201603/customer_feed_service.rb +0 -0
  317. data/lib/adwords_api/v201603/customer_feed_service_registry.rb +0 -0
  318. data/lib/adwords_api/v201603/customer_service.rb +0 -0
  319. data/lib/adwords_api/v201603/customer_service_registry.rb +0 -0
  320. data/lib/adwords_api/v201603/customer_sync_service.rb +0 -0
  321. data/lib/adwords_api/v201603/customer_sync_service_registry.rb +0 -0
  322. data/lib/adwords_api/v201603/data_service.rb +0 -0
  323. data/lib/adwords_api/v201603/data_service_registry.rb +0 -0
  324. data/lib/adwords_api/v201603/draft_async_error_service.rb +0 -0
  325. data/lib/adwords_api/v201603/draft_async_error_service_registry.rb +0 -0
  326. data/lib/adwords_api/v201603/draft_service.rb +0 -0
  327. data/lib/adwords_api/v201603/draft_service_registry.rb +0 -0
  328. data/lib/adwords_api/v201603/experiment_service.rb +0 -0
  329. data/lib/adwords_api/v201603/experiment_service_registry.rb +0 -0
  330. data/lib/adwords_api/v201603/feed_item_service.rb +0 -0
  331. data/lib/adwords_api/v201603/feed_item_service_registry.rb +0 -0
  332. data/lib/adwords_api/v201603/feed_mapping_service.rb +0 -0
  333. data/lib/adwords_api/v201603/feed_mapping_service_registry.rb +0 -0
  334. data/lib/adwords_api/v201603/feed_service.rb +0 -0
  335. data/lib/adwords_api/v201603/feed_service_registry.rb +0 -0
  336. data/lib/adwords_api/v201603/label_service.rb +0 -0
  337. data/lib/adwords_api/v201603/label_service_registry.rb +0 -0
  338. data/lib/adwords_api/v201603/location_criterion_service.rb +0 -0
  339. data/lib/adwords_api/v201603/location_criterion_service_registry.rb +0 -0
  340. data/lib/adwords_api/v201603/managed_customer_service.rb +0 -0
  341. data/lib/adwords_api/v201603/managed_customer_service_registry.rb +0 -0
  342. data/lib/adwords_api/v201603/media_service.rb +0 -0
  343. data/lib/adwords_api/v201603/media_service_registry.rb +0 -0
  344. data/lib/adwords_api/v201603/offline_conversion_feed_service.rb +0 -0
  345. data/lib/adwords_api/v201603/offline_conversion_feed_service_registry.rb +0 -0
  346. data/lib/adwords_api/v201603/report_definition_service.rb +0 -0
  347. data/lib/adwords_api/v201603/report_definition_service_registry.rb +0 -0
  348. data/lib/adwords_api/v201603/shared_criterion_service.rb +0 -0
  349. data/lib/adwords_api/v201603/shared_criterion_service_registry.rb +0 -0
  350. data/lib/adwords_api/v201603/shared_set_service.rb +0 -0
  351. data/lib/adwords_api/v201603/shared_set_service_registry.rb +0 -0
  352. data/lib/adwords_api/v201603/targeting_idea_service.rb +0 -0
  353. data/lib/adwords_api/v201603/targeting_idea_service_registry.rb +0 -0
  354. data/lib/adwords_api/v201603/traffic_estimator_service.rb +0 -0
  355. data/lib/adwords_api/v201603/traffic_estimator_service_registry.rb +0 -0
  356. data/lib/adwords_api/v201603/trial_async_error_service.rb +0 -0
  357. data/lib/adwords_api/v201603/trial_async_error_service_registry.rb +0 -0
  358. data/lib/adwords_api/v201603/trial_service.rb +0 -0
  359. data/lib/adwords_api/v201603/trial_service_registry.rb +0 -0
  360. data/lib/adwords_api/v201605/account_label_service.rb +46 -0
  361. data/lib/adwords_api/v201605/account_label_service_registry.rb +46 -0
  362. data/lib/adwords_api/v201605/ad_customizer_feed_service.rb +46 -0
  363. data/lib/adwords_api/v201605/ad_customizer_feed_service_registry.rb +46 -0
  364. data/lib/adwords_api/v201605/ad_group_ad_service.rb +70 -0
  365. data/lib/adwords_api/v201605/ad_group_ad_service_registry.rb +46 -0
  366. data/lib/adwords_api/v201605/ad_group_bid_modifier_service.rb +54 -0
  367. data/lib/adwords_api/v201605/ad_group_bid_modifier_service_registry.rb +46 -0
  368. data/lib/adwords_api/v201605/ad_group_criterion_service.rb +62 -0
  369. data/lib/adwords_api/v201605/ad_group_criterion_service_registry.rb +46 -0
  370. data/lib/adwords_api/v201605/ad_group_extension_setting_service.rb +54 -0
  371. data/lib/adwords_api/v201605/ad_group_extension_setting_service_registry.rb +46 -0
  372. data/lib/adwords_api/v201605/ad_group_feed_service.rb +54 -0
  373. data/lib/adwords_api/v201605/ad_group_feed_service_registry.rb +46 -0
  374. data/lib/adwords_api/v201605/ad_group_service.rb +62 -0
  375. data/lib/adwords_api/v201605/ad_group_service_registry.rb +46 -0
  376. data/lib/adwords_api/v201605/ad_param_service.rb +46 -0
  377. data/lib/adwords_api/v201605/ad_param_service_registry.rb +46 -0
  378. data/lib/adwords_api/v201605/adwords_user_list_service.rb +62 -0
  379. data/lib/adwords_api/v201605/adwords_user_list_service_registry.rb +46 -0
  380. data/lib/adwords_api/v201605/batch_job_service.rb +54 -0
  381. data/lib/adwords_api/v201605/batch_job_service_registry.rb +46 -0
  382. data/lib/adwords_api/v201605/bidding_strategy_service.rb +54 -0
  383. data/lib/adwords_api/v201605/bidding_strategy_service_registry.rb +46 -0
  384. data/lib/adwords_api/v201605/budget_order_service.rb +54 -0
  385. data/lib/adwords_api/v201605/budget_order_service_registry.rb +46 -0
  386. data/lib/adwords_api/v201605/budget_service.rb +54 -0
  387. data/lib/adwords_api/v201605/budget_service_registry.rb +46 -0
  388. data/lib/adwords_api/v201605/campaign_criterion_service.rb +54 -0
  389. data/lib/adwords_api/v201605/campaign_criterion_service_registry.rb +46 -0
  390. data/lib/adwords_api/v201605/campaign_extension_setting_service.rb +54 -0
  391. data/lib/adwords_api/v201605/campaign_extension_setting_service_registry.rb +46 -0
  392. data/lib/adwords_api/v201605/campaign_feed_service.rb +54 -0
  393. data/lib/adwords_api/v201605/campaign_feed_service_registry.rb +46 -0
  394. data/lib/adwords_api/v201605/campaign_service.rb +62 -0
  395. data/lib/adwords_api/v201605/campaign_service_registry.rb +46 -0
  396. data/lib/adwords_api/v201605/campaign_shared_set_service.rb +54 -0
  397. data/lib/adwords_api/v201605/campaign_shared_set_service_registry.rb +46 -0
  398. data/lib/adwords_api/v201605/constant_data_service.rb +110 -0
  399. data/lib/adwords_api/v201605/constant_data_service_registry.rb +46 -0
  400. data/lib/adwords_api/v201605/conversion_tracker_service.rb +54 -0
  401. data/lib/adwords_api/v201605/conversion_tracker_service_registry.rb +46 -0
  402. data/lib/adwords_api/v201605/customer_extension_setting_service.rb +54 -0
  403. data/lib/adwords_api/v201605/customer_extension_setting_service_registry.rb +46 -0
  404. data/lib/adwords_api/v201605/customer_feed_service.rb +54 -0
  405. data/lib/adwords_api/v201605/customer_feed_service_registry.rb +46 -0
  406. data/lib/adwords_api/v201605/customer_service.rb +54 -0
  407. data/lib/adwords_api/v201605/customer_service_registry.rb +46 -0
  408. data/lib/adwords_api/v201605/customer_sync_service.rb +38 -0
  409. data/lib/adwords_api/v201605/customer_sync_service_registry.rb +47 -0
  410. data/lib/adwords_api/v201605/data_service.rb +94 -0
  411. data/lib/adwords_api/v201605/data_service_registry.rb +46 -0
  412. data/lib/adwords_api/v201605/draft_async_error_service.rb +46 -0
  413. data/lib/adwords_api/v201605/draft_async_error_service_registry.rb +46 -0
  414. data/lib/adwords_api/v201605/draft_service.rb +54 -0
  415. data/lib/adwords_api/v201605/draft_service_registry.rb +46 -0
  416. data/lib/adwords_api/v201605/experiment_service.rb +46 -0
  417. data/lib/adwords_api/v201605/experiment_service_registry.rb +46 -0
  418. data/lib/adwords_api/v201605/feed_item_service.rb +54 -0
  419. data/lib/adwords_api/v201605/feed_item_service_registry.rb +46 -0
  420. data/lib/adwords_api/v201605/feed_mapping_service.rb +54 -0
  421. data/lib/adwords_api/v201605/feed_mapping_service_registry.rb +46 -0
  422. data/lib/adwords_api/v201605/feed_service.rb +54 -0
  423. data/lib/adwords_api/v201605/feed_service_registry.rb +46 -0
  424. data/lib/adwords_api/v201605/label_service.rb +54 -0
  425. data/lib/adwords_api/v201605/label_service_registry.rb +46 -0
  426. data/lib/adwords_api/v201605/location_criterion_service.rb +46 -0
  427. data/lib/adwords_api/v201605/location_criterion_service_registry.rb +46 -0
  428. data/lib/adwords_api/v201605/managed_customer_service.rb +78 -0
  429. data/lib/adwords_api/v201605/managed_customer_service_registry.rb +46 -0
  430. data/lib/adwords_api/v201605/media_service.rb +54 -0
  431. data/lib/adwords_api/v201605/media_service_registry.rb +46 -0
  432. data/lib/adwords_api/v201605/offline_conversion_feed_service.rb +38 -0
  433. data/lib/adwords_api/v201605/offline_conversion_feed_service_registry.rb +46 -0
  434. data/lib/adwords_api/v201605/report_definition_service.rb +38 -0
  435. data/lib/adwords_api/v201605/report_definition_service_registry.rb +46 -0
  436. data/lib/adwords_api/v201605/shared_criterion_service.rb +54 -0
  437. data/lib/adwords_api/v201605/shared_criterion_service_registry.rb +46 -0
  438. data/lib/adwords_api/v201605/shared_set_service.rb +54 -0
  439. data/lib/adwords_api/v201605/shared_set_service_registry.rb +46 -0
  440. data/lib/adwords_api/v201605/targeting_idea_service.rb +38 -0
  441. data/lib/adwords_api/v201605/targeting_idea_service_registry.rb +46 -0
  442. data/lib/adwords_api/v201605/traffic_estimator_service.rb +38 -0
  443. data/lib/adwords_api/v201605/traffic_estimator_service_registry.rb +46 -0
  444. data/lib/adwords_api/v201605/trial_async_error_service.rb +46 -0
  445. data/lib/adwords_api/v201605/trial_async_error_service_registry.rb +46 -0
  446. data/lib/adwords_api/v201605/trial_service.rb +54 -0
  447. data/lib/adwords_api/v201605/trial_service_registry.rb +46 -0
  448. data/lib/adwords_api/version.rb +1 -1
  449. data/test/adwords_api/test_adwords_api.rb +1 -1
  450. data/test/adwords_api/test_api_config.rb +8 -8
  451. data/test/adwords_api/test_batch_job_utils.rb +0 -0
  452. data/test/adwords_api/test_choices.rb +2 -2
  453. data/test/adwords_api/test_report_stream.rb +65 -0
  454. data/test/adwords_api/test_report_utils.rb +62 -2
  455. data/test/suite_integration.rb +2 -2
  456. data/test/templates/v201509/basic_operations_get_campaigns.def +1 -1
  457. data/test/templates/v201509/{misc_use_oauth2_service_account.def → misc_use_oauth2_jwt.def} +2 -2
  458. data/test/templates/v201605/basic_operations_get_campaigns.def +116 -0
  459. data/test/templates/v201605/misc_use_oauth2_jwt.def +131 -0
  460. data/test/test_utils.rb +4 -8
  461. metadata +179 -6
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2016, Google Inc. All Rights Reserved.
5
+ #
6
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
+ # implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ # This example illustrates how to create a trial and wait for it to complete.
20
+ #
21
+ # See the Campaign Drafts and Experiments guide for more information:
22
+ # https://developers.google.com/adwords/api/docs/guides/campaign-drafts-experiments
23
+
24
+ require 'adwords_api'
25
+ require 'date'
26
+
27
+ def add_trial(draft_id, base_campaign_id)
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
+ trial_srv = adwords.service(:TrialService, API_VERSION)
37
+ trial_async_error_srv = adwords.service(:TrialAsyncErrorService, API_VERSION)
38
+
39
+ trial = {
40
+ :draft_id => draft_id,
41
+ :base_campaign_id => base_campaign_id,
42
+ :name => 'Test Trial #%d' % (Time.new.to_f * 1000).to_i,
43
+ :traffic_split_percent => 50
44
+ }
45
+ trial_operation = {:operator => 'ADD', :operand => trial}
46
+
47
+ trial_result = trial_srv.mutate([trial_operation])
48
+
49
+ trial_id = trial_result[:value].first[:id]
50
+
51
+ # Since creating a trial is asynchronous, we have to poll it to wait for
52
+ # it to finish.
53
+ selector = {
54
+ :fields => ['Id', 'Status', 'BaseCampaignId', 'TrialCampaignId'],
55
+ :predicates => [
56
+ :field => 'Id', :operator => 'IN', :values => [trial_id]
57
+ ]
58
+ }
59
+
60
+ poll_attempts = 0
61
+ is_pending = true
62
+ trial = nil
63
+ begin
64
+ sleep_seconds = 30 * (2 ** poll_attempts)
65
+ puts "Sleeping for %d seconds" % sleep_seconds
66
+ sleep(sleep_seconds)
67
+
68
+ trial = trial_srv.get(selector)[:entries].first
69
+
70
+ puts "Trial ID %d has status '%s'" % [trial[:id], trial[:status]]
71
+
72
+ poll_attempts += 1
73
+ is_pending = (trial[:status] == 'CREATING')
74
+ end while is_pending and poll_attempts < MAX_POLL_ATTEMPTS
75
+
76
+ if trial[:status] == 'ACTIVE'
77
+ # The trial creation was successful.
78
+ puts "Trial created with id %d and trial campaign id %d" %
79
+ [trial[:id], trial[:trial_campaign_id]]
80
+ elsif trial[:status] == 'CREATION_FAILED'
81
+ # The trial creation failed, and errors can be fetched from the
82
+ # TrialAsyncErrorService.
83
+ selector = {
84
+ :fields => ['TrialId', 'AsyncError'],
85
+ :predicates => [
86
+ {:field => 'TrialId', :operator => 'IN', :values => [trial[:id]]}
87
+ ]
88
+ }
89
+
90
+ errors = trial_async_error_srv.get(selector)[:entries]
91
+
92
+ if errors.nil?
93
+ puts "Could not retrieve errors for trial %d" % trial[:id]
94
+ else
95
+ puts "Could not create trial due to the following errors:"
96
+ errors.each_with_index do |error, i|
97
+ puts "Error #%d: %s" % [i, error[:async_error]]
98
+ end
99
+ end
100
+ else
101
+ # Most likely, the trial is still being created. You can continue polling,
102
+ # but we have limited the number of attempts in the example.
103
+ puts ("Timed out waiting to create trial from draft %d with base " +
104
+ "campaign %d") % [draft_id, base_campaign_id]
105
+ end
106
+ end
107
+
108
+ if __FILE__ == $0
109
+ API_VERSION = :v201605
110
+ MAX_POLL_ATTEMPTS = 6
111
+
112
+ begin
113
+ draft_id = 'INSERT_DRAFT_ID_HERE'.to_i
114
+ base_campaign_id = 'INSERT_BASE_CAMPAIGN_ID_HERE'.to_i
115
+
116
+ add_trial(draft_id, base_campaign_id)
117
+
118
+ # Authorization error.
119
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
120
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
121
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
122
+ "to retrieve and store OAuth2 tokens."
123
+ puts "See this wiki page for more details:\n\n " +
124
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
125
+
126
+ # HTTP errors.
127
+ rescue AdsCommon::Errors::HttpError => e
128
+ puts "HTTP Error: %s" % e
129
+
130
+ # API errors.
131
+ rescue AdwordsApi::Errors::ApiException => e
132
+ puts "Message: %s" % e.message
133
+ puts 'Errors:'
134
+ e.errors.each_with_index do |error, index|
135
+ puts "\tError [%d]:" % (index + 1)
136
+ error.each do |field, value|
137
+ puts "\t\t%s: %s" % [field, value]
138
+ end
139
+ end
140
+ end
141
+ end
142
+
@@ -0,0 +1,97 @@
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 retrieve all the disapproved ads in a given
20
+ # ad group. To add ads, run add_text_ads.rb.
21
+
22
+ require 'adwords_api'
23
+
24
+ def get_all_disapproved_ads(ad_group_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_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
34
+
35
+ # Get all the disapproved ads for this campaign.
36
+ selector = {
37
+ :fields => ['Id', 'AdGroupAdDisapprovalReasons'],
38
+ :ordering => [{:field => 'Id', :sort_order => 'ASCENDING'}],
39
+ :predicates => [
40
+ {:field => 'AdGroupId', :operator => 'IN', :values => [ad_group_id]},
41
+ {
42
+ :field => 'AdGroupCreativeApprovalStatus',
43
+ :operator => 'IN',
44
+ :values => ['DISAPPROVED']
45
+ }
46
+ ]
47
+ }
48
+ response = ad_group_ad_srv.get(selector)
49
+ if response and response[:entries]
50
+ puts 'Ad group %d has %d disapproved ad(s).' %
51
+ [ad_group_id, response[:total_num_entries]]
52
+ response[:entries].each do |ad_group_ad|
53
+ puts ("\tAd with ID %d and type '%s' was disapproved for the following " +
54
+ 'reasons:') % [ad_group_ad[:ad][:id], ad_group_ad[:ad][:xsi_type]]
55
+ if ad_group_ad.include?(:disapproval_reasons)
56
+ ad_group_ad[:disapproval_reasons].each {|reason| puts "\t\t%s" % reason}
57
+ else
58
+ puts "\t\tReason not provided."
59
+ end
60
+ end
61
+ else
62
+ puts 'No disapproved ads found for ad group %d.' % ad_group_id
63
+ end
64
+ end
65
+
66
+ if __FILE__ == $0
67
+ API_VERSION = :v201605
68
+
69
+ begin
70
+ # ID of an ad group to get disapproved ads for.
71
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
72
+ get_all_disapproved_ads(ad_group_id)
73
+
74
+ # Authorization error.
75
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
76
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
77
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
78
+ "to retrieve and store OAuth2 tokens."
79
+ puts "See this wiki page for more details:\n\n " +
80
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
81
+
82
+ # HTTP errors.
83
+ rescue AdsCommon::Errors::HttpError => e
84
+ puts "HTTP Error: %s" % e
85
+
86
+ # API errors.
87
+ rescue AdwordsApi::Errors::ApiException => e
88
+ puts "Message: %s" % e.message
89
+ puts 'Errors:'
90
+ e.errors.each_with_index do |error, index|
91
+ puts "\tError [%d]:" % (index + 1)
92
+ error.each do |field, value|
93
+ puts "\t\t%s: %s" % [field, value]
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2012, 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 retrieve all the disapproved ads in a given
20
+ # ad group with AWQL. To add ads, run add_text_ads.rb.
21
+
22
+ require 'adwords_api'
23
+
24
+ def get_all_disapproved_ads_with_awql(ad_group_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_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
34
+
35
+ # Get all the disapproved ads for this campaign.
36
+ query = ('SELECT Id, AdGroupAdDisapprovalReasons ' +
37
+ 'WHERE AdGroupId = %d AND AdGroupCreativeApprovalStatus = DISAPPROVED ' +
38
+ 'ORDER BY Id') % ad_group_id
39
+
40
+ response = ad_group_ad_srv.query(query)
41
+ if response and response[:entries]
42
+ puts 'Ad group ID %d has %d disapproved ad(s).' %
43
+ [ad_group_id, response[:total_num_entries]]
44
+ response[:entries].each do |ad_group_ad|
45
+ puts ("\tAd with ID %d and type '%s' was disapproved for the following " +
46
+ 'reasons:') % [ad_group_ad[:ad][:id], ad_group_ad[:ad][:xsi_type]]
47
+ if ad_group_ad.include?(:disapproval_reasons)
48
+ ad_group_ad[:disapproval_reasons].each {|reason| puts "\t\t%s" % reason}
49
+ else
50
+ puts "\t\tReason not provided."
51
+ end
52
+ end
53
+ else
54
+ puts 'No disapproved ads found for ad group ID %d.' % ad_group_id
55
+ end
56
+ end
57
+
58
+ if __FILE__ == $0
59
+ API_VERSION = :v201605
60
+
61
+ begin
62
+ # ID of an ad group to get disapproved ads for.
63
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
64
+ get_all_disapproved_ads_with_awql(ad_group_id)
65
+
66
+ # Authorization error.
67
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
68
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
69
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
70
+ "to retrieve and store OAuth2 tokens."
71
+ puts "See this wiki page for more details:\n\n " +
72
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
73
+
74
+ # HTTP errors.
75
+ rescue AdsCommon::Errors::HttpError => e
76
+ puts 'HTTP Error: %s' % e
77
+
78
+ # API errors.
79
+ rescue AdwordsApi::Errors::ApiException => e
80
+ puts 'Message: %s' % e.message
81
+ puts 'Errors:'
82
+ e.errors.each_with_index do |error, index|
83
+ puts "\tError [%d]:" % (index + 1)
84
+ error.each do |field, value|
85
+ puts "\t\t%s: %s" % [field, value]
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2014, Google Inc. All Rights Reserved.
5
+ #
6
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
+ # implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ # This example gets all campaigns with a specific label. To add a label
20
+ # to campaigns, run add_campaign_labels.rb.
21
+
22
+ require 'adwords_api'
23
+
24
+ def get_campaigns_by_label(label_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
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
34
+
35
+ # Get all the ad groups for this campaign.
36
+ selector = {
37
+ :fields => ['Id', 'Name', 'Labels'],
38
+ :ordering => [{:field => 'Name', :sort_order => 'ASCENDING'}],
39
+ :predicates => [
40
+ {
41
+ :field => 'Labels',
42
+ # Labels filtering is performed by ID. You can use CONTAINS_ANY to
43
+ # select campaigns with any of the label IDs, CONTAINS_ALL to select
44
+ # campaigns with all of the label IDs, or CONTAINS_NONE to select
45
+ # campaigns with none of the label IDs.
46
+ :operator => 'CONTAINS_ANY',
47
+ :values => [label_id]
48
+ }
49
+ ],
50
+ :paging => {
51
+ :start_index => 0,
52
+ :number_results => PAGE_SIZE
53
+ }
54
+ }
55
+
56
+ # Set initial values.
57
+ offset, page = 0, {}
58
+
59
+ begin
60
+ page = campaign_srv.get(selector)
61
+ if page[:entries]
62
+ page[:entries].each do |campaign|
63
+ label_string = campaign[:labels].map do |label|
64
+ '%d/"%s"' % [label[:id], label[:name]]
65
+ end.join(', ')
66
+ puts 'Campaign found with name "%s" and ID %d and labels: %s.' %
67
+ [campaign[:name], campaign[:id], label_string]
68
+ end
69
+ # Increment values to request the next page.
70
+ offset += PAGE_SIZE
71
+ selector[:paging][:start_index] = offset
72
+ end
73
+ end while page[:total_num_entries] > offset
74
+ end
75
+
76
+ if __FILE__ == $0
77
+ API_VERSION = :v201605
78
+ PAGE_SIZE = 500
79
+
80
+ begin
81
+ # Label ID to get campaigns for.
82
+ label_id = 'INSERT_LABEL_ID_HERE'.to_i
83
+ get_campaigns_by_label(label_id)
84
+
85
+ # Authorization error.
86
+ rescue AdsCommon::Errors::OAuth2VerificationRequired => e
87
+ puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
88
+ "OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
89
+ "to retrieve and store OAuth2 tokens."
90
+ puts "See this wiki page for more details:\n\n " +
91
+ 'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
92
+
93
+ # HTTP errors.
94
+ rescue AdsCommon::Errors::HttpError => e
95
+ puts "HTTP Error: %s" % e
96
+
97
+ # API errors.
98
+ rescue AdwordsApi::Errors::ApiException => e
99
+ puts "Message: %s" % e.message
100
+ puts 'Errors:'
101
+ e.errors.each_with_index do |error, index|
102
+ puts "\tError [%d]:" % (index + 1)
103
+ error.each do |field, value|
104
+ puts "\t\t%s: %s" % [field, value]
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env ruby
2
+ # Encoding: utf-8
3
+ #
4
+ # Copyright:: Copyright 2016, 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 graduate a trial.
20
+ #
21
+ # See the Campaign Drafts and Experiments guide for more information:
22
+ # https://developers.google.com/adwords/api/docs/guides/campaign-drafts-experiments
23
+
24
+ require 'adwords_api'
25
+ require 'date'
26
+
27
+ def graduate_trial(trial_id)
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
+ trial_srv = adwords.service(:TrialService, API_VERSION)
37
+ budget_srv = adwords.service(:BudgetService, API_VERSION)
38
+
39
+ # To graduate a trial, you must specify a different budget from the base
40
+ # campaign. The base campaign (in order to have had a trial based on it)
41
+ # must have a non-shared budget, so it cannot be shared with the new
42
+ # independent campaign created by graduation.
43
+ budget = {
44
+ :name => 'Budget #%d' % (Time.new.to_f * 1000).to_i,
45
+ :amount => {:micro_amount => 50000000},
46
+ :delivery_method => 'STANDARD'
47
+ }
48
+ budget_operation = {:operator => 'ADD', :operand => budget}
49
+
50
+ # Add budget.
51
+ return_budget = budget_srv.mutate([budget_operation])
52
+ budget_id = return_budget[:value].first[:budget_id]
53
+
54
+ trial = {
55
+ :id => trial_id,
56
+ :budget_id => budget_id,
57
+ :status => 'GRADUATED'
58
+ }
59
+
60
+ trial_operation = {:operator => 'SET', :operand => trial}
61
+
62
+ # Update the trial.
63
+ return_trial = trial_srv.mutate([trial_operation])
64
+ trial = return_trial[:value].first
65
+
66
+ # Graduation is a synchronous operation, so the campaign is already ready.
67
+ # If you promote instead, make sure to see the polling scheme demonstrated
68
+ # in add_trial.rb to wait for the asynchronous operation to finish.
69
+ puts ("Trial ID %d graduated. Campaign %d was given a new budget ID %d and" +
70
+ "is no longer dependent on this trial.") %
71
+ [trial[:id], trial[:trial_campaign_id], budget_id]
72
+ end
73
+
74
+ if __FILE__ == $0
75
+ API_VERSION = :v201605
76
+
77
+ begin
78
+ trial_id = 'INSERT_TRIAL_ID_HERE'.to_i
79
+
80
+ graduate_trial(trial_id)
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
+ 'https://github.com/googleads/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
106
+