google-adwords-api 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
data/ChangeLog CHANGED
@@ -1,3 +1,12 @@
1
+ 0.4.1:
2
+ - Support for v201109.
3
+ - Added support and example for AdHoc reports.
4
+ - Removed deprecated TrafficEstimatorService (v13 only).
5
+ - Support for proxies.
6
+ - Units spent count and other headers information can now be obtained by
7
+ passing user block to a method call.
8
+ - Require google-ads-common 0.5.2 or later from now on.
9
+
1
10
  0.4.0:
2
11
  - First experimental Savon-based release.
3
12
  - use_ruby_names is now deprecated and always true.
data/README CHANGED
@@ -6,9 +6,9 @@ AdWords and DoubleClick Ad Exchange Buyer API!
6
6
  Please note that this is an early PREVIEW of the client library, still under
7
7
  development.
8
8
 
9
- It contains full support for v13, v200909, v201003, v201008 and v201101, with
10
- full stubs, and a simplified programming interface that lets you handle
11
- everything in native Ruby collections.
9
+ It contains full support for v13, v200909, v201003, v201008, v201101 and
10
+ v201109, with full stubs, and a simplified programming interface that lets you
11
+ handle everything in native Ruby collections.
12
12
 
13
13
 
14
14
  = Docs for Users
@@ -27,9 +27,9 @@ Buyer client library examples. You need the AdWords library in order to use it
27
27
  which is installed automatically as a dependency.
28
28
 
29
29
  The following gem libraries are required:
30
- - savon v0.9.6
31
- - httpclient v2.1.2 or greater
32
- - google-ads-common v0.5.0 or later.
30
+ - savon v0.9.6
31
+ - httpclient v2.1.2 or greater
32
+ - google-ads-common v0.5.2 or later.
33
33
 
34
34
 
35
35
  == 2 - Using the client library:
@@ -63,7 +63,7 @@ You can also pass API a manually constructed config hash like:
63
63
  :user_agent => 'Ruby Sample',
64
64
  :password => 'PASSWORD',
65
65
  :email => 'user@domain.com',
66
- :client_email => 'user2@domain.com'
66
+ :client_customer_id => '012-345-6789'
67
67
  },
68
68
  :service => {
69
69
  :environment => 'PRODUCTION'
@@ -71,18 +71,19 @@ You can also pass API a manually constructed config hash like:
71
71
  })
72
72
 
73
73
  Then, just specify which service you're looking to use, and which version:
74
- campaign_srv = adwords.service(:CampaignService, :v201101)
74
+ campaign_srv = adwords.service(:CampaignService, :v201109)
75
75
 
76
76
  and you should now be able to just use the API methods in the object you were
77
77
  returned:
78
- campaigns = campaign_srv.get({}) # Empty selector to get all
78
+ # Get 'Id', 'Name' and 'Status' fields of all campaigns.
79
+ campaigns = campaign_srv.get({:fields => ['Id', 'Name', 'Status']})
79
80
 
80
81
  See the code in the examples directory for working examples you can build from.
81
82
 
82
83
  *Note*: if your setup requires you to send connections through a proxy server,
83
84
  please set the appropriate options in the config file or config hash. E.g.:
84
85
  config[:connection] = {
85
- :proxy => 'http://user:password@proxy_hostname:8080/path'
86
+ :proxy => 'http://user:password@proxy_hostname:8080'
86
87
  }
87
88
 
88
89
 
@@ -140,6 +141,21 @@ Request details and units spend are logged at the INFO log level, while raw HTTP
140
141
  headers and XML dumps are logged at the DEBUG log level. For more details on
141
142
  using Logger refer to the Ruby Logger documentation.
142
143
 
144
+ === 2.4 - Calculating unit spend:
145
+
146
+ Each AdWords API operation performed consumes a certain number of API units, as
147
+ specified in the rate sheet:
148
+ http://code.google.com/apis/adwords/docs/ratesheet.html
149
+
150
+ The amount of units spent is returned in the header part of the SOAP response.
151
+ This information can be obtained by passing a user block during method call:
152
+ response = report_def_srv.get(selector) do |header|
153
+ puts "Units spent: %d" % header[:units]
154
+ end
155
+
156
+ You can also retrieve the response body as the second block parameter:
157
+ report_def_srv.get(selector) {|header, body| ... }
158
+
143
159
 
144
160
  = Docs for Developers
145
161
 
data/Rakefile CHANGED
@@ -48,7 +48,7 @@ spec = Gem::Specification.new do |s|
48
48
  s.test_files = tests
49
49
  s.has_rdoc = true
50
50
  s.extra_rdoc_files = docs
51
- s.add_dependency('google-ads-common', '~> 0.5.0')
51
+ s.add_dependency('google-ads-common', '~> 0.5.2')
52
52
  s.add_dependency('savon', '= 0.9.6')
53
53
  end
54
54
 
@@ -44,7 +44,7 @@ def add_ad_group()
44
44
  operation = {
45
45
  :operator => 'ADD',
46
46
  :operand => {
47
- :name => 'Earth to Mars Cruises #%s' % (Time.new.to_f * 1000).to_i,
47
+ :name => "Earth to Mars Cruises #%d" % (Time.new.to_f * 1000).to_i,
48
48
  :status => 'ENABLED',
49
49
  :campaign_id => campaign_id,
50
50
  :bids => {
@@ -64,7 +64,7 @@ def add_ad_group()
64
64
  # Add ad group.
65
65
  response = ad_group_srv.mutate([operation])
66
66
  ad_group = response[:value].first
67
- puts 'Ad group id %d was successfully added.' % ad_group[:id]
67
+ puts "Ad group ID %d was successfully added." % ad_group[:id]
68
68
  end
69
69
 
70
70
  if __FILE__ == $0
@@ -75,7 +75,7 @@ def add_ads()
75
75
  :ad_group_id => ad_group_id,
76
76
  :ad => {
77
77
  :xsi_type => 'ImageAd',
78
- :name => 'Cruise to mars image ad #%s' % (Time.new.to_f * 1000).to_i,
78
+ :name => "Cruise to mars image ad #%d" % (Time.new.to_f * 1000).to_i,
79
79
  :url => 'http://www.example.com',
80
80
  :display_url => 'www.example.com',
81
81
  :image => {
@@ -91,11 +91,11 @@ def add_ads()
91
91
  ads = response[:value]
92
92
  puts "Added #{ads.length} ad(s) to ad group #{ad_group_id}."
93
93
  ads.each do |ad|
94
- puts " Ad id is #{ad[:ad][:id]}, type is #{ad[:ad][:xsi_type]} and " +
95
- "status is \"#{ad[:status]}\"."
94
+ puts " Ad ID is #{ad[:ad][:id]}, type is '#{ad[:ad][:xsi_type]}' and " +
95
+ "status is '#{ad[:status]}'."
96
96
  end
97
97
  else
98
- puts "No ads were added."
98
+ puts 'No ads were added.'
99
99
  end
100
100
  end
101
101
 
@@ -41,7 +41,7 @@ def add_campaign()
41
41
  operation = {
42
42
  :operator => 'ADD',
43
43
  :operand => {
44
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
44
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
45
45
  :status => 'PAUSED',
46
46
  :bidding_strategy => {
47
47
  # The 'xsi_type' field allows you to specify the xsi:type of the object
@@ -63,7 +63,7 @@ def add_campaign()
63
63
  response = campaign_srv.mutate([operation])
64
64
  if response and response[:value]
65
65
  campaign = response[:value].first
66
- puts 'Campaign with name "%s" and id %d was added.' %
66
+ puts "Campaign with name '%s' and ID %d was added." %
67
67
  [campaign[:name], campaign[:id]]
68
68
  else
69
69
  puts 'No campaigns were added.'
@@ -45,7 +45,7 @@ def check_campaigns()
45
45
  operation = {
46
46
  :operator => 'ADD',
47
47
  :operand => {
48
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
48
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
49
49
  :status => 'PAUSED',
50
50
  :bidding_strategy => {
51
51
  # The 'xsi_type' field allows you to specify the xsi:type of the object
@@ -68,8 +68,8 @@ def check_campaigns()
68
68
  if response and response[:value]
69
69
  campaigns = response[:value]
70
70
  campaigns.each do |campaign|
71
- puts "Unexpected campaign creation! Name \"#{campaign[:name]}\", id " +
72
- "#{campaign[:id]} and status is \"#{campaign[:status]}\"."
71
+ puts "Unexpected campaign creation! Name '#{campaign[:name]}', ID " +
72
+ "#{campaign[:id]} and status is '#{campaign[:status]}'."
73
73
  end
74
74
  else
75
75
  puts 'No campaigns created.'
@@ -80,7 +80,7 @@ def check_campaigns()
80
80
  operation = {
81
81
  :operator => 'ADD',
82
82
  :operand => {
83
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
83
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
84
84
  :status => 'PAUSED',
85
85
  :bidding_strategy => nil,
86
86
  :budget => {
@@ -44,7 +44,7 @@ def add_ad_group()
44
44
  operation = {
45
45
  :operator => 'ADD',
46
46
  :operand => {
47
- :name => 'Earth to Mars Cruises #%s' % (Time.new.to_f * 1000).to_i,
47
+ :name => "Earth to Mars Cruises #%d" % (Time.new.to_f * 1000).to_i,
48
48
  :status => 'ENABLED',
49
49
  :campaign_id => campaign_id,
50
50
  :bids => {
@@ -64,7 +64,7 @@ def add_ad_group()
64
64
  # Add ad group.
65
65
  response = ad_group_srv.mutate([operation])
66
66
  ad_group = response[:value].first
67
- puts 'Ad group id %d was successfully added.' % ad_group[:id]
67
+ puts "Ad group ID %d was successfully added." % ad_group[:id]
68
68
  end
69
69
 
70
70
  if __FILE__ == $0
@@ -78,7 +78,7 @@ def add_ads()
78
78
  :ad_group_id => ad_group_id,
79
79
  :ad => {
80
80
  :xsi_type => 'ImageAd',
81
- :name => 'Cruise to mars image ad #%s' % (Time.new.to_f * 1000).to_i,
81
+ :name => "Cruise to mars image ad #%d" % (Time.new.to_f * 1000).to_i,
82
82
  :url => 'http://www.example.com',
83
83
  :display_url => 'www.example.com',
84
84
  :image => {
@@ -92,7 +92,7 @@ def add_ads()
92
92
  template_ad_operation = {
93
93
  :operator => 'ADD',
94
94
  :operand => {
95
- :adGroupId => ad_group_id,
95
+ :ad_group_id => ad_group_id,
96
96
  :ad => {
97
97
  :xsi_type => 'TemplateAd',
98
98
  :template_id => 9,
@@ -100,7 +100,7 @@ def add_ads()
100
100
  :width => 300,
101
101
  :height => 250
102
102
  },
103
- :name => 'Mars cruise video ad #%s' % (Time.new.to_f * 1000).to_i,
103
+ :name => "Mars cruise video ad #%d" % (Time.new.to_f * 1000).to_i,
104
104
  :display_url => 'www.example.com',
105
105
  :url => 'http://www.example.com',
106
106
  :template_elements => [{
@@ -144,11 +144,11 @@ def add_ads()
144
144
  ads = response[:value]
145
145
  puts "Added #{ads.length} ad(s) to ad group #{ad_group_id}."
146
146
  ads.each do |ad|
147
- puts " Ad id is #{ad[:ad][:id]}, type is #{ad[:ad][:xsi_type]} and " +
148
- "status is \"#{ad[:status]}\"."
147
+ puts " Ad ID is #{ad[:ad][:id]}, type is '#{ad[:ad][:xsi_type]}' and " +
148
+ "status is '#{ad[:status]}'."
149
149
  end
150
150
  else
151
- puts "No ads were added."
151
+ puts 'No ads were added.'
152
152
  end
153
153
  end
154
154
 
@@ -41,7 +41,7 @@ def add_campaign()
41
41
  operation = {
42
42
  :operator => 'ADD',
43
43
  :operand => {
44
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
44
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
45
45
  :status => 'PAUSED',
46
46
  :bidding_strategy => {
47
47
  # The 'xsi_type' field allows you to specify the xsi:type of the object
@@ -63,7 +63,7 @@ def add_campaign()
63
63
  response = campaign_srv.mutate([operation])
64
64
  if response and response[:value]
65
65
  campaign = response[:value].first
66
- puts 'Campaign with name "%s" and id %d was added.' %
66
+ puts "Campaign with name '%s' and ID %d was added." %
67
67
  [campaign[:name], campaign[:id]]
68
68
  else
69
69
  puts 'No campaigns were added.'
@@ -59,7 +59,7 @@ def add_keywords_performance_report_definition()
59
59
  :max => end_date
60
60
  }
61
61
  },
62
- :report_name => 'Keywords performance report #%s' %
62
+ :report_name => "Keywords performance report #%d" %
63
63
  (Time.new.to_f * 1000).to_i,
64
64
  :report_type => 'KEYWORDS_PERFORMANCE_REPORT',
65
65
  :date_range_type => 'CUSTOM_DATE',
@@ -71,7 +71,7 @@ def add_keywords_performance_report_definition()
71
71
  response = report_def_srv.mutate([operation])
72
72
  if response
73
73
  response.each do |report_definition|
74
- puts 'Report definition with name \'%s\' and id \'%s\' was added' %
74
+ puts "Report definition with name '%s' and ID %d was added" %
75
75
  [report_definition[:report_name], report_definition[:id]]
76
76
  end
77
77
  end
@@ -45,7 +45,7 @@ def check_campaigns()
45
45
  operation = {
46
46
  :operator => 'ADD',
47
47
  :operand => {
48
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
48
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
49
49
  :status => 'PAUSED',
50
50
  :bidding_strategy => {
51
51
  # The 'xsi_type' field allows you to specify the xsi:type of the object
@@ -68,8 +68,8 @@ def check_campaigns()
68
68
  if response and response[:value]
69
69
  campaigns = response[:value]
70
70
  campaigns.each do |campaign|
71
- puts "Unexpected campaign creation! Name \"#{campaign[:name]}\", id " +
72
- "#{campaign[:id]} and status is \"#{campaign[:status]}\"."
71
+ puts "Unexpected campaign creation! Name '#{campaign[:name]}', ID " +
72
+ "#{campaign[:id]} and status is '#{campaign[:status]}'."
73
73
  end
74
74
  else
75
75
  puts 'No campaigns created.'
@@ -80,7 +80,7 @@ def check_campaigns()
80
80
  operation = {
81
81
  :operator => 'ADD',
82
82
  :operand => {
83
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
83
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
84
84
  :status => 'PAUSED',
85
85
  :bidding_strategy => nil,
86
86
  :budget => {
@@ -44,7 +44,7 @@ def add_ad_group()
44
44
  operation = {
45
45
  :operator => 'ADD',
46
46
  :operand => {
47
- :name => 'Earth to Mars Cruises #%s' % (Time.new.to_f * 1000).to_i,
47
+ :name => "Earth to Mars Cruises #%d" % (Time.new.to_f * 1000).to_i,
48
48
  :status => 'ENABLED',
49
49
  :campaign_id => campaign_id,
50
50
  :bids => {
@@ -64,7 +64,7 @@ def add_ad_group()
64
64
  # Add ad group.
65
65
  response = ad_group_srv.mutate([operation])
66
66
  ad_group = response[:value].first
67
- puts 'Ad group id %d was successfully added.' % ad_group[:id]
67
+ puts "Ad group ID %d was successfully added." % ad_group[:id]
68
68
  end
69
69
 
70
70
  if __FILE__ == $0
@@ -78,7 +78,7 @@ def add_ads()
78
78
  :ad_group_id => ad_group_id,
79
79
  :ad => {
80
80
  :xsi_type => 'ImageAd',
81
- :name => 'Cruise to mars image ad #%s' % (Time.new.to_f * 1000).to_i,
81
+ :name => "Cruise to mars image ad #%d" % (Time.new.to_f * 1000).to_i,
82
82
  :url => 'http://www.example.com',
83
83
  :display_url => 'www.example.com',
84
84
  :image => {
@@ -88,11 +88,11 @@ def add_ads()
88
88
  }
89
89
  }
90
90
 
91
- # Create template ad, using the Click to Play Video template (id 9).
91
+ # Create template ad, using the Click to Play Video template (ID 9).
92
92
  template_ad_operation = {
93
93
  :operator => 'ADD',
94
94
  :operand => {
95
- :adGroupId => ad_group_id,
95
+ :ad_group_id => ad_group_id,
96
96
  :ad => {
97
97
  :xsi_type => 'TemplateAd',
98
98
  :template_id => 9,
@@ -100,7 +100,7 @@ def add_ads()
100
100
  :width => 300,
101
101
  :height => 250
102
102
  },
103
- :name => 'Mars cruise video ad #%s' % (Time.new.to_f * 1000).to_i,
103
+ :name => "Mars cruise video ad #%d" % (Time.new.to_f * 1000).to_i,
104
104
  :display_url => 'www.example.com',
105
105
  :url => 'http://www.example.com',
106
106
  :template_elements => [{
@@ -144,11 +144,11 @@ def add_ads()
144
144
  ads = response[:value]
145
145
  puts "Added #{ads.length} ad(s) to ad group #{ad_group_id}."
146
146
  ads.each do |ad|
147
- puts " Ad id is #{ad[:ad][:id]}, type is #{ad[:ad][:xsi_type]} and " +
148
- "status is \"#{ad[:status]}\"."
147
+ puts " Ad ID is #{ad[:ad][:id]}, type is '#{ad[:ad][:xsi_type]}' and " +
148
+ "status is '#{ad[:status]}'."
149
149
  end
150
150
  else
151
- puts "No ads were added."
151
+ puts 'No ads were added.'
152
152
  end
153
153
  end
154
154
 
@@ -41,7 +41,7 @@ def add_campaign()
41
41
  operation = {
42
42
  :operator => 'ADD',
43
43
  :operand => {
44
- :name => 'Interplanetary Cruise #%s' % (Time.new.to_f * 1000).to_i,
44
+ :name => "Interplanetary Cruise #%d" % (Time.new.to_f * 1000).to_i,
45
45
  :status => 'PAUSED',
46
46
  :bidding_strategy => {
47
47
  # The 'xsi_type' field allows you to specify the xsi:type of the object
@@ -63,7 +63,7 @@ def add_campaign()
63
63
  response = campaign_srv.mutate([operation])
64
64
  if response and response[:value]
65
65
  campaign = response[:value].first
66
- puts 'Campaign with name "%s" and id %d was added.' %
66
+ puts "Campaign with name '%s' and ID %d was added." %
67
67
  [campaign[:name], campaign[:id]]
68
68
  else
69
69
  puts 'No campaigns were added.'
@@ -53,16 +53,16 @@ def add_experiment()
53
53
  :operator => 'ADD',
54
54
  :operand => {
55
55
  :campaign_id => campaign_id,
56
- :name => 'Interplanetary Experiment #%s' % (Time.new.to_f * 1000).to_i,
56
+ :name => "Interplanetary Experiment #%d" % (Time.new.to_f * 1000).to_i,
57
57
  :query_percentage => 10,
58
- :start_date_time => Time.now.strftime("%Y%m%d %H%M%S")
58
+ :start_date_time => Time.now.strftime('%Y%m%d %H%M%S')
59
59
  }
60
60
  }
61
61
 
62
62
  # Add experiment.
63
63
  response = experiment_srv.mutate([operation])
64
64
  experiment = response[:value].first
65
- puts 'Experiment with name "%s" and id %d was added.' %
65
+ puts "Experiment with name '%s' and ID %d was added." %
66
66
  [experiment[:name], experiment[:id]]
67
67
 
68
68
  experiment_id = experiment[:id]
@@ -93,7 +93,7 @@ def add_experiment()
93
93
  # Update ad group.
94
94
  response = ad_group_srv.mutate([operation])
95
95
  ad_group = response[:value].first
96
- puts 'Ad group id %d was updated for the experiment.' % ad_group[:id]
96
+ puts "Ad group ID %d was updated for the experiment." % ad_group[:id]
97
97
 
98
98
  # Setup ad group criterion for the experiment.
99
99
  ad_group_criterion = {
@@ -126,7 +126,7 @@ def add_experiment()
126
126
  # Update criterion.
127
127
  response = ad_group_criterion_srv.mutate([operation])
128
128
  criterion = response[:value].first
129
- puts 'Criterion id %d was successfully updated for the experiment.' %
129
+ puts "Criterion ID %d was successfully updated for the experiment." %
130
130
  [criterion[:criterion][:id]]
131
131
 
132
132
  end
@@ -59,7 +59,7 @@ def add_keywords_performance_report_definition()
59
59
  :max => end_date
60
60
  }
61
61
  },
62
- :report_name => 'Keywords performance report #%s' %
62
+ :report_name => "Keywords performance report #%d" %
63
63
  (Time.new.to_f * 1000).to_i,
64
64
  :report_type => 'KEYWORDS_PERFORMANCE_REPORT',
65
65
  :date_range_type => 'CUSTOM_DATE',
@@ -71,7 +71,7 @@ def add_keywords_performance_report_definition()
71
71
  response = report_def_srv.mutate([operation])
72
72
  if response
73
73
  response.each do |report_definition|
74
- puts 'Report definition with name \'%s\' and id \'%s\' was added' %
74
+ puts "Report definition with name '%s' and ID %d was added." %
75
75
  [report_definition[:report_name], report_definition[:id]]
76
76
  end
77
77
  end