google-adwords-api 0.4.0 → 0.4.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 (324) hide show
  1. data/ChangeLog +9 -0
  2. data/README +26 -10
  3. data/Rakefile +1 -1
  4. data/examples/v200909/add_ad_group.rb +2 -2
  5. data/examples/v200909/add_ads.rb +4 -4
  6. data/examples/v200909/add_campaign.rb +2 -2
  7. data/examples/v200909/check_campaigns.rb +4 -4
  8. data/examples/v201003/add_ad_group.rb +2 -2
  9. data/examples/v201003/add_ads.rb +6 -6
  10. data/examples/v201003/add_campaign.rb +2 -2
  11. data/examples/v201003/add_keywords_performance_report_definition.rb +2 -2
  12. data/examples/v201003/check_campaigns.rb +4 -4
  13. data/examples/v201008/add_ad_group.rb +2 -2
  14. data/examples/v201008/add_ads.rb +7 -7
  15. data/examples/v201008/add_campaign.rb +2 -2
  16. data/examples/v201008/add_experiment.rb +5 -5
  17. data/examples/v201008/add_keywords_performance_report_definition.rb +2 -2
  18. data/examples/v201008/add_user_list.rb +2 -2
  19. data/examples/v201008/check_campaigns.rb +4 -4
  20. data/examples/v201008/get_account_hierarchy.rb +8 -11
  21. data/examples/v201101/add_ad_group.rb +2 -2
  22. data/examples/v201101/add_ads.rb +6 -6
  23. data/examples/v201101/add_campaign.rb +2 -2
  24. data/examples/v201101/add_conversion.rb +4 -4
  25. data/examples/v201101/add_experiment.rb +5 -5
  26. data/examples/v201101/add_keywords_performance_report_definition.rb +2 -2
  27. data/examples/v201101/add_user_list.rb +3 -3
  28. data/examples/v201101/check_campaigns.rb +4 -4
  29. data/examples/v201101/get_account_hierarchy.rb +7 -9
  30. data/examples/v201109/add_ad_extension_override.rb +82 -0
  31. data/examples/v201109/add_ad_group.rb +89 -0
  32. data/examples/v201109/add_ad_group_criteria.rb +109 -0
  33. data/examples/v201109/add_ads.rb +174 -0
  34. data/examples/v201109/add_campaign.rb +99 -0
  35. data/examples/v201109/add_campaign_ad_extension.rb +121 -0
  36. data/examples/v201109/add_campaign_targeting_criteria.rb +102 -0
  37. data/examples/{v201101/add_mcc_report_definition.rb → v201109/add_conversion.rb} +26 -28
  38. data/examples/v201109/add_experiment.rb +153 -0
  39. data/examples/v201109/add_negative_campaign_criterion.rb +87 -0
  40. data/examples/v201109/add_user_list.rb +113 -0
  41. data/examples/v201109/check_campaigns.rb +123 -0
  42. data/examples/v201109/delete_ad.rb +85 -0
  43. data/examples/v201109/delete_ad_group.rb +77 -0
  44. data/examples/v201109/delete_ad_group_criterion.rb +86 -0
  45. data/examples/v201109/delete_bulk_mutate_job.rb +87 -0
  46. data/examples/v201109/delete_campaign.rb +78 -0
  47. data/examples/v201109/delete_experiment.rb +78 -0
  48. data/examples/v201109/delete_user_list.rb +78 -0
  49. data/examples/v201109/download_adhoc_report.rb +79 -0
  50. data/examples/v201109/download_report.rb +67 -0
  51. data/examples/v201109/get_account_hierarchy.rb +93 -0
  52. data/examples/v201109/get_ad_group_bid_landscape.rb +94 -0
  53. data/examples/v201109/get_all_account_changes.rb +137 -0
  54. data/examples/v201109/get_all_active_ad_group_criteria.rb +98 -0
  55. data/examples/v201109/get_all_ad_extension_overrides.rb +82 -0
  56. data/examples/v201109/get_all_ad_group_criteria.rb +90 -0
  57. data/examples/v201109/get_all_ad_groups.rb +85 -0
  58. data/examples/v201109/get_all_ad_params.rb +86 -0
  59. data/examples/v201109/get_all_ads.rb +90 -0
  60. data/examples/v201109/get_all_campaign_ad_extensions.rb +87 -0
  61. data/examples/v201109/get_all_campaign_targets.rb +74 -0
  62. data/examples/v201109/get_all_campaigns.rb +77 -0
  63. data/examples/v201109/get_all_carriers.rb +72 -0
  64. data/examples/v201109/get_all_conversions.rb +79 -0
  65. data/examples/v201109/get_all_disapproved_ads.rb +93 -0
  66. data/examples/v201109/get_all_experiments.rb +89 -0
  67. data/examples/v201109/get_all_images.rb +82 -0
  68. data/examples/v201109/get_all_languages.rb +73 -0
  69. data/examples/v201109/get_all_paused_campaigns.rb +83 -0
  70. data/examples/v201109/get_all_report_definitions.rb +75 -0
  71. data/examples/v201109/get_all_user_lists.rb +78 -0
  72. data/examples/v201109/get_all_videos.rb +78 -0
  73. data/examples/v201109/get_bulk_mutate_job.rb +97 -0
  74. data/examples/v201109/get_campaign_alerts.rb +95 -0
  75. data/examples/v201109/get_client_customer_id.rb +87 -0
  76. data/examples/v201109/get_conversion_optimizer_eligibility.rb +93 -0
  77. data/examples/v201109/get_criterion_bid_landscape.rb +93 -0
  78. data/examples/v201109/get_geo_location_info.rb +99 -0
  79. data/examples/v201109/get_keyword_opportunities.rb +95 -0
  80. data/examples/v201109/get_location_criteria.rb +103 -0
  81. data/examples/v201109/get_method_cost.rb +87 -0
  82. data/examples/v201109/get_operation_count.rb +79 -0
  83. data/examples/v201109/get_related_keywords.rb +108 -0
  84. data/examples/v201109/get_related_placements.rb +107 -0
  85. data/examples/v201109/get_report_fields.rb +72 -0
  86. data/examples/v201109/get_total_usage_units_per_month.rb +74 -0
  87. data/examples/v201109/get_traffic_estimates.rb +129 -0
  88. data/examples/v201109/get_unit_count.rb +81 -0
  89. data/examples/v201109/handle_partial_failures.rb +127 -0
  90. data/examples/v201109/handle_policy_violation_error.rb +138 -0
  91. data/examples/v201109/handle_second_factor.rb +87 -0
  92. data/examples/v201109/oauth_handling.rb +95 -0
  93. data/examples/v201109/perform_bulk_mutate_job.rb +212 -0
  94. data/examples/v201109/perform_mutate_job.rb +177 -0
  95. data/examples/v201109/promote_experiment.rb +79 -0
  96. data/examples/v201109/set_ad_params.rb +115 -0
  97. data/examples/v201109/update_ad.rb +86 -0
  98. data/examples/v201109/update_ad_group.rb +81 -0
  99. data/examples/v201109/update_ad_group_criterion.rb +99 -0
  100. data/examples/v201109/update_campaign.rb +84 -0
  101. data/examples/v201109/update_conversion.rb +87 -0
  102. data/examples/v201109/update_user_list.rb +82 -0
  103. data/examples/v201109/upload_image.rb +90 -0
  104. data/lib/adwords_api.rb +54 -50
  105. data/lib/adwords_api/api_config.rb +70 -14
  106. data/lib/adwords_api/credential_handler.rb +32 -13
  107. data/lib/adwords_api/errors.rb +12 -0
  108. data/lib/adwords_api/extensions.rb +8 -118
  109. data/lib/adwords_api/report_utils.rb +198 -0
  110. data/lib/adwords_api/utils.rb +5 -2
  111. data/lib/adwords_api/v13/account_service.rb +11 -11
  112. data/lib/adwords_api/v13/account_service_registry.rb +5 -3
  113. data/lib/adwords_api/v13/report_service.rb +15 -15
  114. data/lib/adwords_api/v13/report_service_registry.rb +5 -3
  115. data/lib/adwords_api/v200909/ad_extension_override_service.rb +5 -5
  116. data/lib/adwords_api/v200909/ad_extension_override_service_registry.rb +5 -3
  117. data/lib/adwords_api/v200909/ad_group_ad_service.rb +5 -5
  118. data/lib/adwords_api/v200909/ad_group_ad_service_registry.rb +5 -3
  119. data/lib/adwords_api/v200909/ad_group_criterion_service.rb +5 -5
  120. data/lib/adwords_api/v200909/ad_group_criterion_service_registry.rb +5 -3
  121. data/lib/adwords_api/v200909/ad_group_service.rb +5 -5
  122. data/lib/adwords_api/v200909/ad_group_service_registry.rb +5 -3
  123. data/lib/adwords_api/v200909/ad_param_service.rb +5 -5
  124. data/lib/adwords_api/v200909/ad_param_service_registry.rb +5 -3
  125. data/lib/adwords_api/v200909/bulk_mutate_job_service.rb +5 -5
  126. data/lib/adwords_api/v200909/bulk_mutate_job_service_registry.rb +5 -3
  127. data/lib/adwords_api/v200909/campaign_ad_extension_service.rb +5 -5
  128. data/lib/adwords_api/v200909/campaign_ad_extension_service_registry.rb +5 -3
  129. data/lib/adwords_api/v200909/campaign_criterion_service.rb +5 -5
  130. data/lib/adwords_api/v200909/campaign_criterion_service_registry.rb +5 -3
  131. data/lib/adwords_api/v200909/campaign_service.rb +5 -5
  132. data/lib/adwords_api/v200909/campaign_service_registry.rb +5 -3
  133. data/lib/adwords_api/v200909/campaign_target_service.rb +5 -5
  134. data/lib/adwords_api/v200909/campaign_target_service_registry.rb +5 -3
  135. data/lib/adwords_api/v200909/geo_location_service.rb +3 -3
  136. data/lib/adwords_api/v200909/geo_location_service_registry.rb +5 -3
  137. data/lib/adwords_api/v200909/info_service.rb +3 -3
  138. data/lib/adwords_api/v200909/info_service_registry.rb +5 -3
  139. data/lib/adwords_api/v200909/targeting_idea_service.rb +5 -5
  140. data/lib/adwords_api/v200909/targeting_idea_service_registry.rb +5 -3
  141. data/lib/adwords_api/v201003/ad_extension_override_service.rb +5 -5
  142. data/lib/adwords_api/v201003/ad_extension_override_service_registry.rb +5 -3
  143. data/lib/adwords_api/v201003/ad_group_ad_service.rb +5 -5
  144. data/lib/adwords_api/v201003/ad_group_ad_service_registry.rb +5 -3
  145. data/lib/adwords_api/v201003/ad_group_criterion_service.rb +5 -5
  146. data/lib/adwords_api/v201003/ad_group_criterion_service_registry.rb +5 -3
  147. data/lib/adwords_api/v201003/ad_group_service.rb +5 -5
  148. data/lib/adwords_api/v201003/ad_group_service_registry.rb +5 -3
  149. data/lib/adwords_api/v201003/ad_param_service.rb +5 -5
  150. data/lib/adwords_api/v201003/ad_param_service_registry.rb +5 -3
  151. data/lib/adwords_api/v201003/bid_landscape_service.rb +3 -3
  152. data/lib/adwords_api/v201003/bid_landscape_service_registry.rb +5 -3
  153. data/lib/adwords_api/v201003/bulk_mutate_job_service.rb +5 -5
  154. data/lib/adwords_api/v201003/bulk_mutate_job_service_registry.rb +5 -3
  155. data/lib/adwords_api/v201003/campaign_ad_extension_service.rb +5 -5
  156. data/lib/adwords_api/v201003/campaign_ad_extension_service_registry.rb +5 -3
  157. data/lib/adwords_api/v201003/campaign_criterion_service.rb +5 -5
  158. data/lib/adwords_api/v201003/campaign_criterion_service_registry.rb +5 -3
  159. data/lib/adwords_api/v201003/campaign_service.rb +5 -5
  160. data/lib/adwords_api/v201003/campaign_service_registry.rb +5 -3
  161. data/lib/adwords_api/v201003/campaign_target_service.rb +5 -5
  162. data/lib/adwords_api/v201003/campaign_target_service_registry.rb +5 -3
  163. data/lib/adwords_api/v201003/geo_location_service.rb +3 -3
  164. data/lib/adwords_api/v201003/geo_location_service_registry.rb +5 -3
  165. data/lib/adwords_api/v201003/info_service.rb +3 -3
  166. data/lib/adwords_api/v201003/info_service_registry.rb +5 -3
  167. data/lib/adwords_api/v201003/media_service.rb +5 -5
  168. data/lib/adwords_api/v201003/media_service_registry.rb +5 -3
  169. data/lib/adwords_api/v201003/report_definition_service.rb +7 -7
  170. data/lib/adwords_api/v201003/report_definition_service_registry.rb +5 -3
  171. data/lib/adwords_api/v201003/targeting_idea_service.rb +5 -5
  172. data/lib/adwords_api/v201003/targeting_idea_service_registry.rb +5 -3
  173. data/lib/adwords_api/v201008/ad_extension_override_service.rb +5 -5
  174. data/lib/adwords_api/v201008/ad_extension_override_service_registry.rb +5 -3
  175. data/lib/adwords_api/v201008/ad_group_ad_service.rb +5 -5
  176. data/lib/adwords_api/v201008/ad_group_ad_service_registry.rb +5 -3
  177. data/lib/adwords_api/v201008/ad_group_criterion_service.rb +5 -5
  178. data/lib/adwords_api/v201008/ad_group_criterion_service_registry.rb +5 -3
  179. data/lib/adwords_api/v201008/ad_group_service.rb +5 -5
  180. data/lib/adwords_api/v201008/ad_group_service_registry.rb +5 -3
  181. data/lib/adwords_api/v201008/ad_param_service.rb +5 -5
  182. data/lib/adwords_api/v201008/ad_param_service_registry.rb +5 -3
  183. data/lib/adwords_api/v201008/alert_service.rb +3 -3
  184. data/lib/adwords_api/v201008/alert_service_registry.rb +5 -3
  185. data/lib/adwords_api/v201008/bid_landscape_service.rb +3 -3
  186. data/lib/adwords_api/v201008/bid_landscape_service_registry.rb +5 -3
  187. data/lib/adwords_api/v201008/bulk_mutate_job_service.rb +5 -5
  188. data/lib/adwords_api/v201008/bulk_mutate_job_service_registry.rb +5 -3
  189. data/lib/adwords_api/v201008/campaign_ad_extension_service.rb +5 -5
  190. data/lib/adwords_api/v201008/campaign_ad_extension_service_registry.rb +5 -3
  191. data/lib/adwords_api/v201008/campaign_criterion_service.rb +5 -5
  192. data/lib/adwords_api/v201008/campaign_criterion_service_registry.rb +5 -3
  193. data/lib/adwords_api/v201008/campaign_service.rb +5 -5
  194. data/lib/adwords_api/v201008/campaign_service_registry.rb +5 -3
  195. data/lib/adwords_api/v201008/campaign_target_service.rb +5 -5
  196. data/lib/adwords_api/v201008/campaign_target_service_registry.rb +5 -3
  197. data/lib/adwords_api/v201008/customer_sync_service.rb +3 -3
  198. data/lib/adwords_api/v201008/customer_sync_service_registry.rb +5 -3
  199. data/lib/adwords_api/v201008/experiment_service.rb +5 -5
  200. data/lib/adwords_api/v201008/experiment_service_registry.rb +5 -3
  201. data/lib/adwords_api/v201008/geo_location_service.rb +3 -3
  202. data/lib/adwords_api/v201008/geo_location_service_registry.rb +5 -3
  203. data/lib/adwords_api/v201008/info_service.rb +3 -3
  204. data/lib/adwords_api/v201008/info_service_registry.rb +5 -3
  205. data/lib/adwords_api/v201008/media_service.rb +5 -5
  206. data/lib/adwords_api/v201008/media_service_registry.rb +5 -3
  207. data/lib/adwords_api/v201008/report_definition_service.rb +7 -7
  208. data/lib/adwords_api/v201008/report_definition_service_registry.rb +5 -3
  209. data/lib/adwords_api/v201008/serviced_account_service.rb +3 -3
  210. data/lib/adwords_api/v201008/serviced_account_service_registry.rb +5 -3
  211. data/lib/adwords_api/v201008/targeting_idea_service.rb +5 -5
  212. data/lib/adwords_api/v201008/targeting_idea_service_registry.rb +5 -3
  213. data/lib/adwords_api/v201008/traffic_estimator_service.rb +3 -3
  214. data/lib/adwords_api/v201008/traffic_estimator_service_registry.rb +5 -3
  215. data/lib/adwords_api/v201008/user_list_service.rb +5 -5
  216. data/lib/adwords_api/v201008/user_list_service_registry.rb +5 -3
  217. data/lib/adwords_api/v201101/ad_extension_override_service.rb +5 -5
  218. data/lib/adwords_api/v201101/ad_extension_override_service_registry.rb +5 -3
  219. data/lib/adwords_api/v201101/ad_group_ad_service.rb +5 -5
  220. data/lib/adwords_api/v201101/ad_group_ad_service_registry.rb +5 -3
  221. data/lib/adwords_api/v201101/ad_group_criterion_service.rb +5 -5
  222. data/lib/adwords_api/v201101/ad_group_criterion_service_registry.rb +5 -3
  223. data/lib/adwords_api/v201101/ad_group_service.rb +5 -5
  224. data/lib/adwords_api/v201101/ad_group_service_registry.rb +5 -3
  225. data/lib/adwords_api/v201101/ad_param_service.rb +5 -5
  226. data/lib/adwords_api/v201101/ad_param_service_registry.rb +5 -3
  227. data/lib/adwords_api/v201101/alert_service.rb +3 -3
  228. data/lib/adwords_api/v201101/alert_service_registry.rb +5 -3
  229. data/lib/adwords_api/v201101/bulk_mutate_job_service.rb +5 -5
  230. data/lib/adwords_api/v201101/bulk_mutate_job_service_registry.rb +5 -3
  231. data/lib/adwords_api/v201101/bulk_opportunity_service.rb +3 -3
  232. data/lib/adwords_api/v201101/bulk_opportunity_service_registry.rb +5 -3
  233. data/lib/adwords_api/v201101/campaign_ad_extension_service.rb +5 -5
  234. data/lib/adwords_api/v201101/campaign_ad_extension_service_registry.rb +5 -3
  235. data/lib/adwords_api/v201101/campaign_criterion_service.rb +5 -5
  236. data/lib/adwords_api/v201101/campaign_criterion_service_registry.rb +5 -3
  237. data/lib/adwords_api/v201101/campaign_service.rb +5 -5
  238. data/lib/adwords_api/v201101/campaign_service_registry.rb +5 -3
  239. data/lib/adwords_api/v201101/campaign_target_service.rb +5 -5
  240. data/lib/adwords_api/v201101/campaign_target_service_registry.rb +5 -3
  241. data/lib/adwords_api/v201101/conversion_tracker_service.rb +5 -5
  242. data/lib/adwords_api/v201101/conversion_tracker_service_registry.rb +5 -3
  243. data/lib/adwords_api/v201101/customer_sync_service.rb +3 -3
  244. data/lib/adwords_api/v201101/customer_sync_service_registry.rb +5 -3
  245. data/lib/adwords_api/v201101/data_service.rb +5 -5
  246. data/lib/adwords_api/v201101/data_service_registry.rb +5 -3
  247. data/lib/adwords_api/v201101/experiment_service.rb +5 -5
  248. data/lib/adwords_api/v201101/experiment_service_registry.rb +5 -3
  249. data/lib/adwords_api/v201101/geo_location_service.rb +3 -3
  250. data/lib/adwords_api/v201101/geo_location_service_registry.rb +5 -3
  251. data/lib/adwords_api/v201101/info_service.rb +3 -3
  252. data/lib/adwords_api/v201101/info_service_registry.rb +5 -3
  253. data/lib/adwords_api/v201101/media_service.rb +5 -5
  254. data/lib/adwords_api/v201101/media_service_registry.rb +5 -3
  255. data/lib/adwords_api/v201101/report_definition_service.rb +7 -15
  256. data/lib/adwords_api/v201101/report_definition_service_registry.rb +5 -3
  257. data/lib/adwords_api/v201101/serviced_account_service.rb +3 -3
  258. data/lib/adwords_api/v201101/serviced_account_service_registry.rb +5 -3
  259. data/lib/adwords_api/v201101/targeting_idea_service.rb +5 -5
  260. data/lib/adwords_api/v201101/targeting_idea_service_registry.rb +5 -3
  261. data/lib/adwords_api/v201101/traffic_estimator_service.rb +3 -3
  262. data/lib/adwords_api/v201101/traffic_estimator_service_registry.rb +5 -3
  263. data/lib/adwords_api/v201101/user_list_service.rb +5 -5
  264. data/lib/adwords_api/v201101/user_list_service_registry.rb +5 -3
  265. data/lib/adwords_api/v201109/ad_extension_override_service.rb +36 -0
  266. data/lib/adwords_api/v201109/ad_extension_override_service_registry.rb +44 -0
  267. data/lib/adwords_api/v201109/ad_group_ad_service.rb +36 -0
  268. data/lib/adwords_api/v201109/ad_group_ad_service_registry.rb +44 -0
  269. data/lib/adwords_api/v201109/ad_group_criterion_service.rb +36 -0
  270. data/lib/adwords_api/v201109/ad_group_criterion_service_registry.rb +44 -0
  271. data/lib/adwords_api/v201109/ad_group_service.rb +36 -0
  272. data/lib/adwords_api/v201109/ad_group_service_registry.rb +44 -0
  273. data/lib/adwords_api/v201109/ad_param_service.rb +36 -0
  274. data/lib/adwords_api/v201109/ad_param_service_registry.rb +44 -0
  275. data/lib/adwords_api/v201109/alert_service.rb +32 -0
  276. data/lib/adwords_api/v201109/alert_service_registry.rb +44 -0
  277. data/lib/adwords_api/v201109/bulk_mutate_job_service.rb +36 -0
  278. data/lib/adwords_api/v201109/bulk_mutate_job_service_registry.rb +44 -0
  279. data/lib/adwords_api/v201109/bulk_opportunity_service.rb +32 -0
  280. data/lib/adwords_api/v201109/bulk_opportunity_service_registry.rb +44 -0
  281. data/lib/adwords_api/v201109/campaign_ad_extension_service.rb +36 -0
  282. data/lib/adwords_api/v201109/campaign_ad_extension_service_registry.rb +44 -0
  283. data/lib/adwords_api/v201109/campaign_criterion_service.rb +36 -0
  284. data/lib/adwords_api/v201109/campaign_criterion_service_registry.rb +44 -0
  285. data/lib/adwords_api/v201109/campaign_service.rb +36 -0
  286. data/lib/adwords_api/v201109/campaign_service_registry.rb +44 -0
  287. data/lib/adwords_api/v201109/campaign_target_service.rb +36 -0
  288. data/lib/adwords_api/v201109/campaign_target_service_registry.rb +44 -0
  289. data/lib/adwords_api/v201109/constant_data_service.rb +36 -0
  290. data/lib/adwords_api/v201109/constant_data_service_registry.rb +44 -0
  291. data/lib/adwords_api/v201109/conversion_tracker_service.rb +36 -0
  292. data/lib/adwords_api/v201109/conversion_tracker_service_registry.rb +44 -0
  293. data/lib/adwords_api/v201109/customer_sync_service.rb +32 -0
  294. data/lib/adwords_api/v201109/customer_sync_service_registry.rb +45 -0
  295. data/lib/adwords_api/v201109/data_service.rb +36 -0
  296. data/lib/adwords_api/v201109/data_service_registry.rb +44 -0
  297. data/lib/adwords_api/v201109/experiment_service.rb +36 -0
  298. data/lib/adwords_api/v201109/experiment_service_registry.rb +44 -0
  299. data/lib/adwords_api/v201109/geo_location_service.rb +32 -0
  300. data/lib/adwords_api/v201109/geo_location_service_registry.rb +44 -0
  301. data/lib/adwords_api/v201109/info_service.rb +32 -0
  302. data/lib/adwords_api/v201109/info_service_registry.rb +44 -0
  303. data/lib/adwords_api/v201109/location_criterion_service.rb +32 -0
  304. data/lib/adwords_api/v201109/location_criterion_service_registry.rb +44 -0
  305. data/lib/adwords_api/v201109/media_service.rb +36 -0
  306. data/lib/adwords_api/v201109/media_service_registry.rb +44 -0
  307. data/lib/adwords_api/v201109/mutate_job_service.rb +40 -0
  308. data/lib/adwords_api/v201109/mutate_job_service_registry.rb +44 -0
  309. data/lib/adwords_api/v201109/report_definition_service.rb +45 -0
  310. data/lib/adwords_api/v201109/report_definition_service_registry.rb +44 -0
  311. data/lib/adwords_api/v201109/serviced_account_service.rb +32 -0
  312. data/lib/adwords_api/v201109/serviced_account_service_registry.rb +44 -0
  313. data/lib/adwords_api/v201109/targeting_idea_service.rb +36 -0
  314. data/lib/adwords_api/v201109/targeting_idea_service_registry.rb +44 -0
  315. data/lib/adwords_api/v201109/traffic_estimator_service.rb +32 -0
  316. data/lib/adwords_api/v201109/traffic_estimator_service_registry.rb +44 -0
  317. data/lib/adwords_api/v201109/user_list_service.rb +36 -0
  318. data/lib/adwords_api/v201109/user_list_service_registry.rb +44 -0
  319. data/test/bugs/test_issue_00000031.rb +78 -0
  320. metadata +467 -342
  321. data/examples/v201101/download_mcc_report.rb +0 -113
  322. data/examples/v201101/download_mcc_report_as_file.rb +0 -114
  323. data/lib/adwords_api/v13/traffic_estimator_service.rb +0 -44
  324. data/lib/adwords_api/v13/traffic_estimator_service_registry.rb +0 -39
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.sgomes@gmail.com (Sérgio Gomes)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example demonstrates how to handle policy violation errors. To create
21
+ # an ad group, run add_ad_group.rb.
22
+ #
23
+ # Tags: AdGroupAdService.mutate
24
+
25
+ require 'rubygems'
26
+ require 'adwords_api'
27
+ require 'adwords_api/utils'
28
+
29
+ API_VERSION = :v201109
30
+
31
+ def handle_policy_violation_error()
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
+ ad_group_ad_srv = adwords.service(:AdGroupAdService, API_VERSION)
41
+
42
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
43
+
44
+ # Create text ad.
45
+ text_ad_operation = {
46
+ :operator => 'ADD',
47
+ :operand => {
48
+ :ad_group_id => ad_group_id,
49
+ :ad => {
50
+ # The 'xsi_type' field allows you to specify the xsi:type of the object
51
+ # being created. It's only necessary when you must provide an explicit
52
+ # type that the client library can't infer.
53
+ :xsi_type => 'TextAd',
54
+ :headline => 'Mars Cruise!!!',
55
+ :description1 => 'Visit the Red Planet in style.',
56
+ :description2 => 'Low-gravity fun for everyone!',
57
+ :url => 'http://www.example.com',
58
+ :display_url => 'www.example.com',
59
+ }
60
+ }
61
+ }
62
+
63
+ operations = [text_ad_operation]
64
+
65
+ # Validate ad.
66
+ begin
67
+ # Enable "validate only" for the length of this block
68
+ adwords.validate_only do
69
+ ad_group_ad_srv.mutate(operations)
70
+ end
71
+ puts 'Validation successful, no errors returned.'
72
+ rescue AdwordsApi::Errors::ApiException => e
73
+ e.errors.each do |error|
74
+ if error[:xsi_type] == 'PolicyViolationError'
75
+ operation_index = AdwordsApi::Utils.operation_index_for_error(error)
76
+ operation = operations[operation_index]
77
+ puts "Ad with headline '%s' violated %s policy '%s'." %
78
+ [operation[:operand][:ad][:headline],
79
+ error[:is_exemptable] ? 'exemptable' : 'non-exemptable',
80
+ error[:external_policy_name]]
81
+ if error[:is_exemptable]
82
+ # Add exemption request to the operation.
83
+ puts "Adding exemption request for policy name '%s' on text '%s'." %
84
+ [error[:key][:policy_name], error[:key][:violating_text]]
85
+ unless operation[:exemption_requests]
86
+ operation[:exemption_requests] = []
87
+ end
88
+ operation[:exemption_requests] << {
89
+ :key => error[:key]
90
+ }
91
+ else
92
+ # Remove non-exemptable operation
93
+ puts "Removing the operation from the request."
94
+ operations.delete(operation)
95
+ end
96
+ else
97
+ # Non-policy error returned, re-throw exception.
98
+ raise e
99
+ end
100
+ end
101
+ end
102
+
103
+ # Add ads.
104
+ if operations.size > 0
105
+ response = ad_group_ad_srv.mutate(operations)
106
+ if response and response[:value]
107
+ ads = response[:value]
108
+ puts "Added #{ads.length} ad(s) to ad group #{ad_group_id}."
109
+ ads.each do |ad|
110
+ puts " Ad id is #{ad[:ad][:id]}, type is #{ad[:ad][:xsi_type]} and " +
111
+ "status is \"#{ad[:status]}\"."
112
+ end
113
+ else
114
+ puts "No ads were added."
115
+ end
116
+ end
117
+ end
118
+
119
+ if __FILE__ == $0
120
+ begin
121
+ handle_policy_violation_error()
122
+
123
+ # HTTP errors.
124
+ rescue AdsCommon::Errors::HttpError => e
125
+ puts "HTTP Error: %s" % e
126
+
127
+ # API errors.
128
+ rescue AdwordsApi::Errors::ApiException => e
129
+ puts "Message: %s" % e.message
130
+ puts 'Errors:'
131
+ e.errors.each_with_index do |error, index|
132
+ puts "\tError [%d]:" % (index + 1)
133
+ error.each do |field, value|
134
+ puts "\t\t%s: %s" % [field, value]
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example illustrates how to handle 2 factor authorization errors.
21
+
22
+ require 'rubygems'
23
+ require 'adwords_api'
24
+
25
+ API_VERSION = :v201109
26
+
27
+ def handle_second_factor()
28
+ # Set up credentials with an account that has 2Factor enabled.
29
+ config = {
30
+ :authentication => {
31
+ :method => 'ClientLogin',
32
+ :email => '2steptester@gmail.com',
33
+ :password => 'testaccount',
34
+ :user_agent => 'Ruby 2 Factor Sample'
35
+ },
36
+ :service => {
37
+ :environment => 'PRODUCTION'
38
+ }
39
+ }
40
+ adwords = AdwordsApi::Api.new(config)
41
+
42
+ # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
43
+ # the configuration file or provide your own logger:
44
+ # adwords.logger = Logger.new('adwords_xml.log')
45
+
46
+ begin
47
+ # Forcing library to request authorization token.
48
+ auth_token = adwords.authorize()
49
+ puts 'Successfully retrieved the token.'
50
+
51
+ # Second factor error is one of AuthErrors.
52
+ rescue AdsCommon::Errors::AuthError => e
53
+ puts "Authorization failed with message:"
54
+ puts "\t%s" % e.message
55
+ # Checking 'Info' field for particular auth error type.
56
+ if e.info and e.info.casecmp('InvalidSecondFactor') == 0
57
+ puts "The user has enabled two factor authentication in this account." +
58
+ " Please use OAuth authentication method or have the user generate an" +
59
+ " application-specific password to make calls against the AdWords" +
60
+ " API. See \n" +
61
+ " http://adwordsapi.blogspot.com/2011/02/authentication-changes-with" +
62
+ "-2-step.html\n" +
63
+ "for more details."
64
+ end
65
+ end
66
+ end
67
+
68
+ if __FILE__ == $0
69
+ begin
70
+ handle_second_factor()
71
+
72
+ # HTTP errors.
73
+ rescue AdsCommon::Errors::HttpError => e
74
+ puts "HTTP Error: %s" % e
75
+
76
+ # API errors.
77
+ rescue AdwordsApi::Errors::ApiException => e
78
+ puts "Message: %s" % e.message
79
+ puts 'Errors:'
80
+ e.errors.each_with_index do |error, index|
81
+ puts "\tError [%d]:" % (index + 1)
82
+ error.each do |field, value|
83
+ puts "\t\t%s: %s" % [field, value]
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.dklimkin@gmail.com (Danial Klimkin)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This example illustrates how to use OAuth authentication method.
21
+ #
22
+ # Tags: CampaignService.get
23
+
24
+ require 'rubygems'
25
+ require 'adwords_api'
26
+
27
+ API_VERSION = :v201109
28
+ MAX_RETRIES = 3
29
+
30
+ def oauth_handling()
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
+ campaign_srv = adwords.service(:CampaignService, API_VERSION)
40
+
41
+ # Get all the campaigns for this account; empty selector.
42
+ selector = {
43
+ :fields => ['Id', 'Name', 'Status'],
44
+ :ordering => [{:field => 'Name', :sort_order => 'ASCENDING'}]
45
+ }
46
+
47
+ retry_count = 0
48
+
49
+ begin
50
+ response = campaign_srv.get(selector)
51
+ rescue AdsCommon::Errors::OAuthVerificationRequired => e
52
+ if retry_count < MAX_RETRIES
53
+ puts "Hit Auth error, please navigate to URL:\n\t%s" % e.oauth_url
54
+ print 'log in and type the verification code: '
55
+ verification_code = gets.chomp
56
+ adwords.credential_handler.set_credential(
57
+ :oauth_verification_code, verification_code)
58
+ retry_count += 1
59
+ retry
60
+ else
61
+ raise AdsCommon::Errors::AuthError, 'Failed to authenticate.'
62
+ end
63
+ end
64
+
65
+ if response and response[:entries]
66
+ campaigns = response[:entries]
67
+ campaigns.each do |campaign|
68
+ puts "Campaign name is \"#{campaign[:name]}\", id is #{campaign[:id]} " +
69
+ "and status is \"#{campaign[:status]}\"."
70
+ end
71
+ else
72
+ puts "No campaigns were found."
73
+ end
74
+ end
75
+
76
+ if __FILE__ == $0
77
+ begin
78
+ oauth_handling()
79
+
80
+ # HTTP errors.
81
+ rescue AdsCommon::Errors::HttpError => e
82
+ puts "HTTP Error: %s" % e
83
+
84
+ # API errors.
85
+ rescue AdwordsApi::Errors::ApiException => e
86
+ puts "Message: %s" % e.message
87
+ puts 'Errors:'
88
+ e.errors.each_with_index do |error, index|
89
+ puts "\tError [%d]:" % (index + 1)
90
+ error.each do |field, value|
91
+ puts "\t\t%s: %s" % [field, value]
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # Author:: api.sgomes@gmail.com (Sérgio Gomes)
4
+ #
5
+ # Copyright:: Copyright 2011, Google Inc. All Rights Reserved.
6
+ #
7
+ # License:: Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
16
+ # implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ # This code sample illustrates how to perform asynchronous requests using the
21
+ # BulkMutateJobService.
22
+ #
23
+ # Tags: BulkMutateJobService.mutate
24
+
25
+ require 'rubygems'
26
+ require 'adwords_api'
27
+
28
+ API_VERSION = :v201109
29
+
30
+ def perform_bulk_mutate_job()
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
+ bulk_mutate_job_srv = adwords.service(:BulkMutateJobService, API_VERSION)
40
+
41
+ campaign_id = 'INSERT_CAMPAIGN_ID_HERE'.to_i
42
+ ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
43
+
44
+ # Create an AdGroupAdOperation to add a text ad.
45
+ text_ad_operation = {
46
+ # The 'xsi_type' field allows you to specify the xsi:type of the object
47
+ # being created. It's only necessary when you must provide an explicit
48
+ # type that the client library can't infer.
49
+ :xsi_type => 'AdGroupAdOperation',
50
+ :operator => 'ADD',
51
+ :operand => {
52
+ :ad_group_id => ad_group_id,
53
+ :ad => {
54
+ :xsi_type => 'TextAd',
55
+ :headline => 'Luxury Cruise to Mars',
56
+ :description1 => 'Visit the Red Planet in style.',
57
+ :description2 => 'Low-gravity fun for everyone!',
58
+ :url => 'http://www.example.com',
59
+ :display_url => 'www.example.com',
60
+ }
61
+ }
62
+ }
63
+
64
+ # Create an operation stream for the ad.
65
+ ad_stream = {
66
+ :scoping_entity_id => {
67
+ :type => 'CAMPAIGN_ID',
68
+ :value => campaign_id
69
+ },
70
+ :operations => [text_ad_operation]
71
+ }
72
+
73
+ # Create AdGroupCriterionOperations to add keywords.
74
+ kwd_operations = []
75
+ 1.upto(100) do |index|
76
+ kwd_operation = {
77
+ :xsi_type => 'AdGroupCriterionOperation',
78
+ :operator => 'ADD',
79
+ :operand => {
80
+ :xsi_type => 'BiddableAdGroupCriterion',
81
+ :ad_group_id => ad_group_id,
82
+ :criterion => {
83
+ :xsi_type => 'Keyword',
84
+ :match_type => 'BROAD',
85
+ :text => 'mars%s' % index
86
+ }
87
+ }
88
+ }
89
+ kwd_operations << kwd_operation
90
+ end
91
+
92
+ # Create an operation stream for the keywords.
93
+ kwd_stream = {
94
+ :scoping_entity_id => {
95
+ :type => 'CAMPAIGN_ID',
96
+ :value => campaign_id
97
+ },
98
+ :operations => kwd_operations
99
+ }
100
+
101
+ # Create a BulkMutateJobService operation with the first part of the job.
102
+ job_operation_1 = {
103
+ :xsi_type => 'JobOperation',
104
+ # We're using ADD here because we're creating a new job.
105
+ :operator => 'ADD',
106
+ :operand => {
107
+ :xsi_type => 'BulkMutateJob',
108
+ :num_request_parts => 2,
109
+ :request => {
110
+ # The part index is zero-based.
111
+ :part_index => 0,
112
+ :operation_streams => [ad_stream]
113
+ }
114
+ }
115
+ }
116
+
117
+ # Call mutate() to create a new job by uploading the first part.
118
+ response_1 = bulk_mutate_job_srv.mutate(job_operation_1)
119
+ job_id = response_1[:id]
120
+ puts 'Job id %d was successfully created.' % job_id
121
+
122
+ # Similarly, create the next part of the job.
123
+ job_operation_2 = {
124
+ :xsi_type => 'JobOperation',
125
+ # We're using SET now because we're adding a new part to an existing job.
126
+ # Using ADD again would create a new job altogether.
127
+ :operator => 'SET',
128
+ :operand => {
129
+ :xsi_type => 'BulkMutateJob',
130
+ :num_request_parts => 2,
131
+ # Use the ID from the job we added.
132
+ :id => job_id,
133
+ :request => {
134
+ # Second part, hence index 1.
135
+ :part_index => 1,
136
+ :operation_streams => [kwd_stream]
137
+ }
138
+ }
139
+ }
140
+
141
+ # And call mutate() to upload the second part. Since this is the final part,
142
+ # the job is automatically cleared for execution.
143
+ response_2 = bulk_mutate_job_srv.mutate(job_operation_2)
144
+ puts 'Second part of job %d successfully submitted.' % job_id
145
+
146
+ # Wait for the job to complete.
147
+ selector = {
148
+ :job_ids => [job_id]
149
+ }
150
+ sleep_interval = 10
151
+ status = nil
152
+ get_response = nil
153
+ while status != 'COMPLETED' && status != 'FAILED'
154
+ unless status.nil?
155
+ puts "Current status is #{status}, waiting #{sleep_interval} seconds"
156
+ sleep(sleep_interval) unless status.nil?
157
+ end
158
+ get_response = bulk_mutate_job_srv.get(selector)
159
+ if get_response and get_response.size > 0
160
+ status = get_response.first[:status]
161
+ else
162
+ puts 'Error retrieving job status; aborting.'
163
+ exit
164
+ end
165
+ end
166
+
167
+ if status == 'COMPLETED'
168
+ puts 'Job completed!'
169
+ # Retrieve the results for the parts.
170
+ 0.upto(job_operation_1[:operand][:num_request_parts] - 1) do |part_index|
171
+ selector = {
172
+ :job_ids => [job_id],
173
+ # Retrieve results for the current part.
174
+ :result_part_index => part_index
175
+ }
176
+ results = bulk_mutate_job_srv.get(selector)
177
+ if results
178
+ results.each do |result|
179
+ puts 'Part %d/%d of job #%d has successfully completed' %
180
+ [part_index + 1, job_operation_1[:operand][:num_request_parts],
181
+ job_id]
182
+ end
183
+ else
184
+ puts 'Error retrieving job results; aborting.'
185
+ exit
186
+ end
187
+ end
188
+ else
189
+ puts 'Job failed: ' + get_response.first[:failure_reason]
190
+ end
191
+ end
192
+
193
+ if __FILE__ == $0
194
+ begin
195
+ perform_bulk_mutate_job()
196
+
197
+ # HTTP errors.
198
+ rescue AdsCommon::Errors::HttpError => e
199
+ puts "HTTP Error: %s" % e
200
+
201
+ # API errors.
202
+ rescue AdwordsApi::Errors::ApiException => e
203
+ puts "Message: %s" % e.message
204
+ puts 'Errors:'
205
+ e.errors.each_with_index do |error, index|
206
+ puts "\tError [%d]:" % (index + 1)
207
+ error.each do |field, value|
208
+ puts "\t\t%s: %s" % [field, value]
209
+ end
210
+ end
211
+ end
212
+ end