google-adwords-api 0.19.1 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/COPYING +0 -0
- data/ChangeLog +4 -0
- data/README.md +3 -3
- data/adwords_api.yml +0 -0
- data/examples/v201603/campaign_management/add_draft.rb +0 -0
- data/examples/v201603/campaign_management/add_trial.rb +0 -0
- data/examples/v201603/campaign_management/graduate_trial.rb +0 -0
- data/examples/v201605/advanced_operations/add_responsive_display_ad.rb +8 -4
- data/examples/v201605/campaign_management/add_draft.rb +0 -0
- data/examples/v201605/campaign_management/add_trial.rb +0 -0
- data/examples/v201605/campaign_management/graduate_trial.rb +0 -0
- data/lib/adwords_api.rb +0 -0
- data/lib/adwords_api/api_config.rb +0 -86
- data/lib/adwords_api/batch_job_utils.rb +0 -3
- data/lib/adwords_api/credential_handler.rb +0 -0
- data/lib/adwords_api/errors.rb +0 -0
- data/lib/adwords_api/incremental_upload_helper.rb +0 -0
- data/lib/adwords_api/report_header_handler.rb +0 -0
- data/lib/adwords_api/report_stream.rb +0 -0
- data/lib/adwords_api/report_utils.rb +0 -0
- data/lib/adwords_api/utils.rb +0 -0
- data/lib/adwords_api/utils_reporter.rb +0 -0
- data/lib/adwords_api/v201601/account_label_service.rb +0 -0
- data/lib/adwords_api/v201601/account_label_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_customizer_feed_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_customizer_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_ad_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_ad_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_bid_modifier_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_bid_modifier_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_criterion_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_feed_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_group_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/ad_param_service.rb +0 -0
- data/lib/adwords_api/v201601/ad_param_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/adwords_user_list_service.rb +0 -0
- data/lib/adwords_api/v201601/adwords_user_list_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/batch_job_service.rb +0 -0
- data/lib/adwords_api/v201601/batch_job_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/bidding_strategy_service.rb +0 -0
- data/lib/adwords_api/v201601/bidding_strategy_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/budget_order_service.rb +0 -0
- data/lib/adwords_api/v201601/budget_order_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/budget_service.rb +0 -0
- data/lib/adwords_api/v201601/budget_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/campaign_criterion_service.rb +0 -0
- data/lib/adwords_api/v201601/campaign_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/campaign_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201601/campaign_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/campaign_feed_service.rb +0 -0
- data/lib/adwords_api/v201601/campaign_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/campaign_service.rb +0 -0
- data/lib/adwords_api/v201601/campaign_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/campaign_shared_set_service.rb +0 -0
- data/lib/adwords_api/v201601/campaign_shared_set_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/constant_data_service.rb +0 -0
- data/lib/adwords_api/v201601/constant_data_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/conversion_tracker_service.rb +0 -0
- data/lib/adwords_api/v201601/conversion_tracker_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/customer_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201601/customer_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/customer_feed_service.rb +0 -0
- data/lib/adwords_api/v201601/customer_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/customer_service.rb +0 -0
- data/lib/adwords_api/v201601/customer_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/customer_sync_service.rb +0 -0
- data/lib/adwords_api/v201601/customer_sync_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/data_service.rb +0 -0
- data/lib/adwords_api/v201601/data_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/experiment_service.rb +0 -0
- data/lib/adwords_api/v201601/experiment_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/feed_item_service.rb +0 -0
- data/lib/adwords_api/v201601/feed_item_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/feed_mapping_service.rb +0 -0
- data/lib/adwords_api/v201601/feed_mapping_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/feed_service.rb +0 -0
- data/lib/adwords_api/v201601/feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/label_service.rb +0 -0
- data/lib/adwords_api/v201601/label_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/location_criterion_service.rb +0 -0
- data/lib/adwords_api/v201601/location_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/managed_customer_service.rb +0 -0
- data/lib/adwords_api/v201601/managed_customer_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/media_service.rb +0 -0
- data/lib/adwords_api/v201601/media_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/mutate_job_service.rb +0 -0
- data/lib/adwords_api/v201601/mutate_job_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/offline_conversion_feed_service.rb +0 -0
- data/lib/adwords_api/v201601/offline_conversion_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/report_definition_service.rb +0 -0
- data/lib/adwords_api/v201601/report_definition_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/shared_criterion_service.rb +0 -0
- data/lib/adwords_api/v201601/shared_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/shared_set_service.rb +0 -0
- data/lib/adwords_api/v201601/shared_set_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/targeting_idea_service.rb +0 -0
- data/lib/adwords_api/v201601/targeting_idea_service_registry.rb +0 -0
- data/lib/adwords_api/v201601/traffic_estimator_service.rb +0 -0
- data/lib/adwords_api/v201601/traffic_estimator_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/account_label_service.rb +0 -0
- data/lib/adwords_api/v201603/account_label_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_customizer_feed_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_customizer_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_ad_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_ad_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_bid_modifier_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_bid_modifier_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_criterion_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_feed_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_group_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/ad_param_service.rb +0 -0
- data/lib/adwords_api/v201603/ad_param_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/adwords_user_list_service.rb +0 -0
- data/lib/adwords_api/v201603/adwords_user_list_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/batch_job_service.rb +0 -0
- data/lib/adwords_api/v201603/batch_job_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/bidding_strategy_service.rb +0 -0
- data/lib/adwords_api/v201603/bidding_strategy_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/budget_order_service.rb +0 -0
- data/lib/adwords_api/v201603/budget_order_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/budget_service.rb +0 -0
- data/lib/adwords_api/v201603/budget_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/campaign_criterion_service.rb +0 -0
- data/lib/adwords_api/v201603/campaign_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/campaign_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201603/campaign_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/campaign_feed_service.rb +0 -0
- data/lib/adwords_api/v201603/campaign_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/campaign_service.rb +0 -0
- data/lib/adwords_api/v201603/campaign_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/campaign_shared_set_service.rb +0 -0
- data/lib/adwords_api/v201603/campaign_shared_set_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/constant_data_service.rb +0 -0
- data/lib/adwords_api/v201603/constant_data_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/conversion_tracker_service.rb +0 -0
- data/lib/adwords_api/v201603/conversion_tracker_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/customer_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201603/customer_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/customer_feed_service.rb +0 -0
- data/lib/adwords_api/v201603/customer_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/customer_service.rb +0 -0
- data/lib/adwords_api/v201603/customer_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/customer_sync_service.rb +0 -0
- data/lib/adwords_api/v201603/customer_sync_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/data_service.rb +0 -0
- data/lib/adwords_api/v201603/data_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/draft_async_error_service.rb +0 -0
- data/lib/adwords_api/v201603/draft_async_error_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/draft_service.rb +0 -0
- data/lib/adwords_api/v201603/draft_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/experiment_service.rb +0 -0
- data/lib/adwords_api/v201603/experiment_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/feed_item_service.rb +0 -0
- data/lib/adwords_api/v201603/feed_item_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/feed_mapping_service.rb +0 -0
- data/lib/adwords_api/v201603/feed_mapping_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/feed_service.rb +0 -0
- data/lib/adwords_api/v201603/feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/label_service.rb +0 -0
- data/lib/adwords_api/v201603/label_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/location_criterion_service.rb +0 -0
- data/lib/adwords_api/v201603/location_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/managed_customer_service.rb +0 -0
- data/lib/adwords_api/v201603/managed_customer_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/media_service.rb +0 -0
- data/lib/adwords_api/v201603/media_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/offline_conversion_feed_service.rb +0 -0
- data/lib/adwords_api/v201603/offline_conversion_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/report_definition_service.rb +0 -0
- data/lib/adwords_api/v201603/report_definition_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/shared_criterion_service.rb +0 -0
- data/lib/adwords_api/v201603/shared_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/shared_set_service.rb +0 -0
- data/lib/adwords_api/v201603/shared_set_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/targeting_idea_service.rb +0 -0
- data/lib/adwords_api/v201603/targeting_idea_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/traffic_estimator_service.rb +0 -0
- data/lib/adwords_api/v201603/traffic_estimator_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/trial_async_error_service.rb +0 -0
- data/lib/adwords_api/v201603/trial_async_error_service_registry.rb +0 -0
- data/lib/adwords_api/v201603/trial_service.rb +0 -0
- data/lib/adwords_api/v201603/trial_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/account_label_service.rb +0 -0
- data/lib/adwords_api/v201605/account_label_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_customizer_feed_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_customizer_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_ad_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_ad_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_bid_modifier_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_bid_modifier_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_criterion_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_feed_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_group_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/ad_param_service.rb +0 -0
- data/lib/adwords_api/v201605/ad_param_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/adwords_user_list_service.rb +0 -0
- data/lib/adwords_api/v201605/adwords_user_list_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/batch_job_service.rb +0 -0
- data/lib/adwords_api/v201605/batch_job_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/bidding_strategy_service.rb +0 -0
- data/lib/adwords_api/v201605/bidding_strategy_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/budget_order_service.rb +0 -0
- data/lib/adwords_api/v201605/budget_order_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/budget_service.rb +0 -0
- data/lib/adwords_api/v201605/budget_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/campaign_criterion_service.rb +0 -0
- data/lib/adwords_api/v201605/campaign_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/campaign_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201605/campaign_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/campaign_feed_service.rb +0 -0
- data/lib/adwords_api/v201605/campaign_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/campaign_service.rb +0 -0
- data/lib/adwords_api/v201605/campaign_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/campaign_shared_set_service.rb +0 -0
- data/lib/adwords_api/v201605/campaign_shared_set_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/constant_data_service.rb +0 -0
- data/lib/adwords_api/v201605/constant_data_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/conversion_tracker_service.rb +0 -0
- data/lib/adwords_api/v201605/conversion_tracker_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/customer_extension_setting_service.rb +0 -0
- data/lib/adwords_api/v201605/customer_extension_setting_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/customer_feed_service.rb +0 -0
- data/lib/adwords_api/v201605/customer_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/customer_service.rb +0 -0
- data/lib/adwords_api/v201605/customer_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/customer_sync_service.rb +0 -0
- data/lib/adwords_api/v201605/customer_sync_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/data_service.rb +0 -0
- data/lib/adwords_api/v201605/data_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/draft_async_error_service.rb +0 -0
- data/lib/adwords_api/v201605/draft_async_error_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/draft_service.rb +0 -0
- data/lib/adwords_api/v201605/draft_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/experiment_service.rb +0 -0
- data/lib/adwords_api/v201605/experiment_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/feed_item_service.rb +0 -0
- data/lib/adwords_api/v201605/feed_item_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/feed_mapping_service.rb +0 -0
- data/lib/adwords_api/v201605/feed_mapping_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/feed_service.rb +0 -0
- data/lib/adwords_api/v201605/feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/label_service.rb +0 -0
- data/lib/adwords_api/v201605/label_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/location_criterion_service.rb +0 -0
- data/lib/adwords_api/v201605/location_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/managed_customer_service.rb +0 -0
- data/lib/adwords_api/v201605/managed_customer_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/media_service.rb +0 -0
- data/lib/adwords_api/v201605/media_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/offline_conversion_feed_service.rb +0 -0
- data/lib/adwords_api/v201605/offline_conversion_feed_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/report_definition_service.rb +0 -0
- data/lib/adwords_api/v201605/report_definition_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/shared_criterion_service.rb +0 -0
- data/lib/adwords_api/v201605/shared_criterion_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/shared_set_service.rb +0 -0
- data/lib/adwords_api/v201605/shared_set_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/targeting_idea_service.rb +0 -0
- data/lib/adwords_api/v201605/targeting_idea_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/traffic_estimator_service.rb +0 -0
- data/lib/adwords_api/v201605/traffic_estimator_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/trial_async_error_service.rb +0 -0
- data/lib/adwords_api/v201605/trial_async_error_service_registry.rb +0 -0
- data/lib/adwords_api/v201605/trial_service.rb +0 -0
- data/lib/adwords_api/v201605/trial_service_registry.rb +0 -0
- data/lib/adwords_api/version.rb +1 -1
- data/test/adwords_api/test_batch_job_utils.rb +2 -2
- data/test/adwords_api/test_report_stream.rb +0 -0
- data/test/templates/v201605/basic_operations_get_campaigns.def +1 -1
- data/test/templates/v201605/misc_use_oauth2_jwt.def +1 -1
- metadata +4 -164
- data/examples/v201509/account_management/create_account.rb +0 -88
- data/examples/v201509/account_management/get_account_changes.rb +0 -139
- data/examples/v201509/account_management/get_account_hierarchy.rb +0 -94
- data/examples/v201509/advanced_operations/add_ad_customizers.rb +0 -184
- data/examples/v201509/advanced_operations/add_ad_group_bid_modifier.rb +0 -101
- data/examples/v201509/advanced_operations/add_click_to_download_ad.rb +0 -133
- data/examples/v201509/advanced_operations/add_complete_campaigns_using_batch_job.rb +0 -356
- data/examples/v201509/advanced_operations/add_html5_ad.rb +0 -137
- data/examples/v201509/advanced_operations/add_text_ad_with_upgraded_urls.rb +0 -134
- data/examples/v201509/advanced_operations/create_and_attach_shared_keyword_set.rb +0 -141
- data/examples/v201509/advanced_operations/find_and_remove_criteria_from_shared_set.rb +0 -174
- data/examples/v201509/advanced_operations/get_ad_group_bid_modifiers.rb +0 -102
- data/examples/v201509/advanced_operations/use_shared_bidding_strategy.rb +0 -147
- data/examples/v201509/basic_operations/add_ad_groups.rb +0 -142
- data/examples/v201509/basic_operations/add_campaigns.rb +0 -139
- data/examples/v201509/basic_operations/add_keywords.rb +0 -114
- data/examples/v201509/basic_operations/add_text_ads.rb +0 -109
- data/examples/v201509/basic_operations/get_ad_groups.rb +0 -102
- data/examples/v201509/basic_operations/get_campaigns.rb +0 -97
- data/examples/v201509/basic_operations/get_campaigns_with_awql.rb +0 -89
- data/examples/v201509/basic_operations/get_keywords.rb +0 -109
- data/examples/v201509/basic_operations/get_text_ads.rb +0 -110
- data/examples/v201509/basic_operations/pause_ad.rb +0 -88
- data/examples/v201509/basic_operations/remove_ad.rb +0 -89
- data/examples/v201509/basic_operations/remove_ad_group.rb +0 -85
- data/examples/v201509/basic_operations/remove_campaign.rb +0 -87
- data/examples/v201509/basic_operations/remove_keyword.rb +0 -94
- data/examples/v201509/basic_operations/update_ad_group.rb +0 -85
- data/examples/v201509/basic_operations/update_campaign.rb +0 -86
- data/examples/v201509/basic_operations/update_keyword.rb +0 -106
- data/examples/v201509/campaign_management/add_campaign_labels.rb +0 -82
- data/examples/v201509/campaign_management/add_experiment.rb +0 -162
- data/examples/v201509/campaign_management/add_keywords_in_bulk.rb +0 -153
- data/examples/v201509/campaign_management/add_keywords_using_incremental_batch_job.rb +0 -179
- data/examples/v201509/campaign_management/get_all_disapproved_ads.rb +0 -97
- data/examples/v201509/campaign_management/get_all_disapproved_ads_with_awql.rb +0 -89
- data/examples/v201509/campaign_management/get_campaigns_by_label.rb +0 -108
- data/examples/v201509/campaign_management/promote_experiment.rb +0 -81
- data/examples/v201509/campaign_management/set_ad_parameters.rb +0 -118
- data/examples/v201509/campaign_management/set_criterion_bid_modifier.rb +0 -104
- data/examples/v201509/campaign_management/validate_text_ad.rb +0 -110
- data/examples/v201509/error_handling/handle_partial_failures.rb +0 -130
- data/examples/v201509/error_handling/handle_policy_violation_error.rb +0 -141
- data/examples/v201509/extensions/add_google_my_business_location_extensions.rb +0 -193
- data/examples/v201509/extensions/add_site_links.rb +0 -164
- data/examples/v201509/extensions/add_site_links_using_feeds.rb +0 -281
- data/examples/v201509/migration/migrate_to_extension_settings.rb +0 -386
- data/examples/v201509/migration/upgrade_ad_url.rb +0 -93
- data/examples/v201509/misc/get_all_images_and_videos.rb +0 -104
- data/examples/v201509/misc/setup_oauth2.rb +0 -84
- data/examples/v201509/misc/upload_image.rb +0 -93
- data/examples/v201509/misc/upload_media_bundle.rb +0 -90
- data/examples/v201509/misc/use_oauth2_jwt.rb +0 -93
- data/examples/v201509/misc/use_runtime_config.rb +0 -92
- data/examples/v201509/optimization/estimate_keyword_traffic.rb +0 -146
- data/examples/v201509/optimization/get_keyword_bid_simulations.rb +0 -95
- data/examples/v201509/optimization/get_keyword_ideas.rb +0 -126
- data/examples/v201509/remarketing/add_audience.rb +0 -118
- data/examples/v201509/remarketing/add_conversion_tracker.rb +0 -98
- data/examples/v201509/remarketing/add_crm_based_user_list.rb +0 -119
- data/examples/v201509/remarketing/add_rule_based_user_lists.rb +0 -167
- data/examples/v201509/remarketing/upload_offline_conversions.rb +0 -98
- data/examples/v201509/reporting/download_criteria_report.rb +0 -92
- data/examples/v201509/reporting/download_criteria_report_with_awql.rb +0 -93
- data/examples/v201509/reporting/get_report_fields.rb +0 -75
- data/examples/v201509/reporting/parallel_report_download.rb +0 -164
- data/examples/v201509/reporting/stream_criteria_report_results.rb +0 -97
- data/examples/v201509/shopping_campaigns/add_product_partition_tree.rb +0 -267
- data/examples/v201509/shopping_campaigns/add_product_scope.rb +0 -129
- data/examples/v201509/shopping_campaigns/add_shopping_campaign.rb +0 -129
- data/examples/v201509/shopping_campaigns/get_product_category_taxonomy.rb +0 -115
- data/examples/v201509/targeting/add_campaign_targeting_criteria.rb +0 -180
- data/examples/v201509/targeting/add_demographic_targeting_criteria.rb +0 -112
- data/examples/v201509/targeting/get_campaign_targeting_criteria.rb +0 -106
- data/examples/v201509/targeting/get_targetable_languages_and_carriers.rb +0 -89
- data/examples/v201509/targeting/lookup_location.rb +0 -108
- data/lib/adwords_api/v201509/account_label_service.rb +0 -46
- data/lib/adwords_api/v201509/account_label_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_customizer_feed_service.rb +0 -46
- data/lib/adwords_api/v201509/ad_customizer_feed_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_group_ad_service.rb +0 -70
- data/lib/adwords_api/v201509/ad_group_ad_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_group_bid_modifier_service.rb +0 -54
- data/lib/adwords_api/v201509/ad_group_bid_modifier_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_group_criterion_service.rb +0 -62
- data/lib/adwords_api/v201509/ad_group_criterion_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_group_extension_setting_service.rb +0 -54
- data/lib/adwords_api/v201509/ad_group_extension_setting_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_group_feed_service.rb +0 -54
- data/lib/adwords_api/v201509/ad_group_feed_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_group_service.rb +0 -62
- data/lib/adwords_api/v201509/ad_group_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/ad_param_service.rb +0 -46
- data/lib/adwords_api/v201509/ad_param_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/adwords_user_list_service.rb +0 -54
- data/lib/adwords_api/v201509/adwords_user_list_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/batch_job_service.rb +0 -54
- data/lib/adwords_api/v201509/batch_job_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/bidding_strategy_service.rb +0 -54
- data/lib/adwords_api/v201509/bidding_strategy_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/budget_order_service.rb +0 -54
- data/lib/adwords_api/v201509/budget_order_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/budget_service.rb +0 -54
- data/lib/adwords_api/v201509/budget_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/campaign_criterion_service.rb +0 -54
- data/lib/adwords_api/v201509/campaign_criterion_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/campaign_extension_setting_service.rb +0 -54
- data/lib/adwords_api/v201509/campaign_extension_setting_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/campaign_feed_service.rb +0 -54
- data/lib/adwords_api/v201509/campaign_feed_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/campaign_service.rb +0 -62
- data/lib/adwords_api/v201509/campaign_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/campaign_shared_set_service.rb +0 -54
- data/lib/adwords_api/v201509/campaign_shared_set_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/constant_data_service.rb +0 -102
- data/lib/adwords_api/v201509/constant_data_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/conversion_tracker_service.rb +0 -54
- data/lib/adwords_api/v201509/conversion_tracker_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/customer_extension_setting_service.rb +0 -54
- data/lib/adwords_api/v201509/customer_extension_setting_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/customer_feed_service.rb +0 -54
- data/lib/adwords_api/v201509/customer_feed_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/customer_service.rb +0 -46
- data/lib/adwords_api/v201509/customer_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/customer_sync_service.rb +0 -38
- data/lib/adwords_api/v201509/customer_sync_service_registry.rb +0 -47
- data/lib/adwords_api/v201509/data_service.rb +0 -78
- data/lib/adwords_api/v201509/data_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/experiment_service.rb +0 -46
- data/lib/adwords_api/v201509/experiment_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/feed_item_service.rb +0 -54
- data/lib/adwords_api/v201509/feed_item_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/feed_mapping_service.rb +0 -54
- data/lib/adwords_api/v201509/feed_mapping_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/feed_service.rb +0 -54
- data/lib/adwords_api/v201509/feed_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/label_service.rb +0 -54
- data/lib/adwords_api/v201509/label_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/location_criterion_service.rb +0 -46
- data/lib/adwords_api/v201509/location_criterion_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/managed_customer_service.rb +0 -78
- data/lib/adwords_api/v201509/managed_customer_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/media_service.rb +0 -54
- data/lib/adwords_api/v201509/media_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/mutate_job_service.rb +0 -54
- data/lib/adwords_api/v201509/mutate_job_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/offline_conversion_feed_service.rb +0 -38
- data/lib/adwords_api/v201509/offline_conversion_feed_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/report_definition_service.rb +0 -38
- data/lib/adwords_api/v201509/report_definition_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/shared_criterion_service.rb +0 -54
- data/lib/adwords_api/v201509/shared_criterion_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/shared_set_service.rb +0 -54
- data/lib/adwords_api/v201509/shared_set_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/targeting_idea_service.rb +0 -38
- data/lib/adwords_api/v201509/targeting_idea_service_registry.rb +0 -46
- data/lib/adwords_api/v201509/traffic_estimator_service.rb +0 -38
- data/lib/adwords_api/v201509/traffic_estimator_service_registry.rb +0 -46
- data/test/templates/v201509/basic_operations_get_campaigns.def +0 -116
- data/test/templates/v201509/misc_use_oauth2_jwt.def +0 -131
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# This example illustrates how to add an ad group level mobile bid modifier
|
|
20
|
-
# override for a campaign.
|
|
21
|
-
|
|
22
|
-
require 'adwords_api'
|
|
23
|
-
|
|
24
|
-
def add_ad_group_bid_modifier(ad_group_id, bid_modifier)
|
|
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
|
-
bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)
|
|
34
|
-
|
|
35
|
-
# Mobile criterion ID.
|
|
36
|
-
criterion_id = 30001
|
|
37
|
-
|
|
38
|
-
# Prepare to add an ad group level override.
|
|
39
|
-
operation = {
|
|
40
|
-
# Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
|
|
41
|
-
# modifier can be removed with the 'REMOVE' operator.
|
|
42
|
-
:operator => 'ADD',
|
|
43
|
-
:operand => {
|
|
44
|
-
:ad_group_id => ad_group_id,
|
|
45
|
-
:criterion => {
|
|
46
|
-
:xsi_type => 'Platform',
|
|
47
|
-
:id => criterion_id
|
|
48
|
-
},
|
|
49
|
-
:bid_modifier => bid_modifier
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# Add ad group level mobile bid modifier.
|
|
54
|
-
response = bid_modifier_srv.mutate([operation])
|
|
55
|
-
if response and response[:value]
|
|
56
|
-
modifier = response[:value].first
|
|
57
|
-
value = modifier[:bid_modifier] || 'unset'
|
|
58
|
-
puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d was updated with ' +
|
|
59
|
-
'ad group level modifier: %s') %
|
|
60
|
-
[modifier[:campaign_id], modifier[:ad_group_id],
|
|
61
|
-
modifier[:criterion][:id], value]
|
|
62
|
-
else
|
|
63
|
-
puts 'No modifiers were added.'
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
if __FILE__ == $0
|
|
68
|
-
API_VERSION = :v201509
|
|
69
|
-
|
|
70
|
-
begin
|
|
71
|
-
# ID of an ad group to add an override for.
|
|
72
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
|
73
|
-
# Bid modifier to override with.
|
|
74
|
-
bid_modifier = 1.5
|
|
75
|
-
|
|
76
|
-
add_ad_group_bid_modifier(ad_group_id, bid_modifier)
|
|
77
|
-
|
|
78
|
-
# Authorization error.
|
|
79
|
-
rescue AdsCommon::Errors::OAuth2VerificationRequired => e
|
|
80
|
-
puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
|
|
81
|
-
"OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
|
|
82
|
-
"to retrieve and store OAuth2 tokens."
|
|
83
|
-
puts "See this wiki page for more details:\n\n " +
|
|
84
|
-
'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
|
|
85
|
-
|
|
86
|
-
# HTTP errors.
|
|
87
|
-
rescue AdsCommon::Errors::HttpError => e
|
|
88
|
-
puts "HTTP Error: %s" % e
|
|
89
|
-
|
|
90
|
-
# API errors.
|
|
91
|
-
rescue AdwordsApi::Errors::ApiException => e
|
|
92
|
-
puts "Message: %s" % e.message
|
|
93
|
-
puts 'Errors:'
|
|
94
|
-
e.errors.each_with_index do |error, index|
|
|
95
|
-
puts "\tError [%d]:" % (index + 1)
|
|
96
|
-
error.each do |field, value|
|
|
97
|
-
puts "\t\t%s: %s" % [field, value]
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2013, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# This code example creates a click-to-download ad, also known as an app
|
|
20
|
-
# promotion ad to a given ad group. To list ad groups, run get_ad_groups.rb.
|
|
21
|
-
|
|
22
|
-
require 'adwords_api'
|
|
23
|
-
|
|
24
|
-
def add_click_to_download_ad(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
|
-
# Create the template elements for the ad. You can refer to
|
|
36
|
-
# https://developers.google.com/adwords/api/docs/appendix/templateads
|
|
37
|
-
# for the list of available template fields.
|
|
38
|
-
ad_data = {
|
|
39
|
-
:unique_name => 'adData',
|
|
40
|
-
:fields => [
|
|
41
|
-
{
|
|
42
|
-
:name => 'headline',
|
|
43
|
-
:field_text => 'Enjoy your drive in Mars',
|
|
44
|
-
:type => 'TEXT'
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
:name => 'description1',
|
|
48
|
-
:field_text => 'Realistic physics simulation',
|
|
49
|
-
:type => 'TEXT'
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
:name => 'description2',
|
|
53
|
-
:field_text => 'Race against players online',
|
|
54
|
-
:type => 'TEXT'
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
:name => 'appId',
|
|
58
|
-
:field_text => 'com.example.demogame',
|
|
59
|
-
:type => 'TEXT'
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
:name => 'appStore',
|
|
63
|
-
:field_text => '2',
|
|
64
|
-
:type => 'ENUM'
|
|
65
|
-
}
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
# Create click to download ad.
|
|
70
|
-
click_to_download_app_ad = {
|
|
71
|
-
:xsi_type => 'TemplateAd',
|
|
72
|
-
:name => 'Ad for demo game',
|
|
73
|
-
:template_id => 353,
|
|
74
|
-
:final_urls =>
|
|
75
|
-
['http://play.google.com/store/apps/details?id=com.example.demogame'],
|
|
76
|
-
:display_url => 'play.google.com',
|
|
77
|
-
:template_elements => [ad_data]
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
# Create ad group ad.
|
|
81
|
-
ad_group_ad = {
|
|
82
|
-
:ad_group_id => ad_group_id,
|
|
83
|
-
:ad => click_to_download_app_ad,
|
|
84
|
-
# Optional.
|
|
85
|
-
:status => 'PAUSED'
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
# Add ad.
|
|
89
|
-
response = ad_group_ad_srv.mutate([
|
|
90
|
-
{:operator => 'ADD', :operand => ad_group_ad}
|
|
91
|
-
])
|
|
92
|
-
if response and response[:value]
|
|
93
|
-
response[:value].each do |ad|
|
|
94
|
-
puts "Added new click-to-download ad to ad group ID %d with url '%s'." %
|
|
95
|
-
[ad[:ad][:id], ad[:ad][:final_urls[0]]]
|
|
96
|
-
end
|
|
97
|
-
else
|
|
98
|
-
raise StandardError, 'No ads were added.'
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
if __FILE__ == $0
|
|
103
|
-
API_VERSION = :v201509
|
|
104
|
-
|
|
105
|
-
begin
|
|
106
|
-
# Ad group ID to add text ads to.
|
|
107
|
-
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'.to_i
|
|
108
|
-
add_click_to_download_ad(ad_group_id)
|
|
109
|
-
|
|
110
|
-
# Authorization error.
|
|
111
|
-
rescue AdsCommon::Errors::OAuth2VerificationRequired => e
|
|
112
|
-
puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
|
|
113
|
-
"OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
|
|
114
|
-
"to retrieve and store OAuth2 tokens."
|
|
115
|
-
puts "See this wiki page for more details:\n\n " +
|
|
116
|
-
'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
|
|
117
|
-
|
|
118
|
-
# HTTP errors.
|
|
119
|
-
rescue AdsCommon::Errors::HttpError => e
|
|
120
|
-
puts "HTTP Error: %s" % e
|
|
121
|
-
|
|
122
|
-
# API errors.
|
|
123
|
-
rescue AdwordsApi::Errors::ApiException => e
|
|
124
|
-
puts "Message: %s" % e.message
|
|
125
|
-
puts 'Errors:'
|
|
126
|
-
e.errors.each_with_index do |error, index|
|
|
127
|
-
puts "\tError [%d]:" % (index + 1)
|
|
128
|
-
error.each do |field, value|
|
|
129
|
-
puts "\t\t%s: %s" % [field, value]
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
end
|
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# Encoding: utf-8
|
|
3
|
-
#
|
|
4
|
-
# Copyright:: Copyright 2015, Google Inc. All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
# you may not use this file except in compliance with the License.
|
|
8
|
-
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
15
|
-
# implied.
|
|
16
|
-
# See the License for the specific language governing permissions and
|
|
17
|
-
# limitations under the License.
|
|
18
|
-
#
|
|
19
|
-
# This code sample illustrates how to use BatchJobService to create a complete
|
|
20
|
-
# campaign, including ad groups and keywords.
|
|
21
|
-
|
|
22
|
-
require 'adwords_api'
|
|
23
|
-
|
|
24
|
-
def add_complete_campaigns_using_batch_job()
|
|
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
|
-
batch_job_srv = adwords.service(:BatchJobService, API_VERSION)
|
|
34
|
-
batch_job_utils = adwords.batch_job_utils(API_VERSION)
|
|
35
|
-
|
|
36
|
-
# Create a BatchJob.
|
|
37
|
-
add_op = {
|
|
38
|
-
:operator => 'ADD',
|
|
39
|
-
:operand => {}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
response = batch_job_srv.mutate([add_op])
|
|
43
|
-
batch_job = response[:value].first
|
|
44
|
-
|
|
45
|
-
# Get the upload URL from the new job.
|
|
46
|
-
upload_url = batch_job[:upload_url][:url]
|
|
47
|
-
puts "Created BatchJob with ID %d, status '%s', and upload URL %s." %
|
|
48
|
-
[batch_job[:id], batch_job[:status], upload_url]
|
|
49
|
-
|
|
50
|
-
# Create a temporary ID generator that will produce a sequence of descending
|
|
51
|
-
# negative numbers.
|
|
52
|
-
temp_id_generator = TempIdGenerator.new()
|
|
53
|
-
|
|
54
|
-
# Create an array of hashed operations generated from the batch_job_utils.
|
|
55
|
-
operations = []
|
|
56
|
-
|
|
57
|
-
# Create an operation to create a new budget.
|
|
58
|
-
budget_operation = build_budget_operation(temp_id_generator)
|
|
59
|
-
operations << budget_operation
|
|
60
|
-
|
|
61
|
-
# Create operations to create new campaigns.
|
|
62
|
-
campaign_operations = build_campaign_operations(
|
|
63
|
-
temp_id_generator, budget_operation)
|
|
64
|
-
operations += campaign_operations
|
|
65
|
-
|
|
66
|
-
# Create operations to create new negative keyword criteria for each
|
|
67
|
-
# campaign.
|
|
68
|
-
operations += build_campaign_criterion_operations(campaign_operations)
|
|
69
|
-
|
|
70
|
-
# Create operations to create new ad groups.
|
|
71
|
-
ad_group_operations = build_ad_group_operations(
|
|
72
|
-
temp_id_generator, campaign_operations)
|
|
73
|
-
operations += ad_group_operations
|
|
74
|
-
|
|
75
|
-
# Create operations to create new ad group criteria (keywords).
|
|
76
|
-
operations += build_ad_group_criterion_operations(ad_group_operations)
|
|
77
|
-
|
|
78
|
-
# Create operations to create new ad group ads (text ads).
|
|
79
|
-
operations += build_ad_group_ad_operations(ad_group_operations)
|
|
80
|
-
|
|
81
|
-
# Use the batch_job_utils to upload all operations.
|
|
82
|
-
batch_job_utils.upload_operations(operations, upload_url)
|
|
83
|
-
puts "Uploaded %d operations for batch job with ID %d." %
|
|
84
|
-
[operations.size, batch_job[:id]]
|
|
85
|
-
|
|
86
|
-
# Poll for completion of the batch job using an exponential back off.
|
|
87
|
-
poll_attempts = 0
|
|
88
|
-
is_pending = true
|
|
89
|
-
selector = {
|
|
90
|
-
:fields => ['Id', 'Status', 'DownloadUrl', 'ProcessingErrors',
|
|
91
|
-
'ProgressStats'],
|
|
92
|
-
:predicates => [{
|
|
93
|
-
:field => 'Id',
|
|
94
|
-
:operator => 'IN',
|
|
95
|
-
:values => [batch_job[:id]]
|
|
96
|
-
}]
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
begin
|
|
100
|
-
sleep_seconds = 30 * (2 ** poll_attempts)
|
|
101
|
-
puts "Sleeping for %d seconds" % sleep_seconds
|
|
102
|
-
sleep(sleep_seconds)
|
|
103
|
-
|
|
104
|
-
batch_job = batch_job_srv.get(selector)[:entries].first
|
|
105
|
-
|
|
106
|
-
puts "Batch job ID %d has status '%s'." %
|
|
107
|
-
[batch_job[:id], batch_job[:status]]
|
|
108
|
-
|
|
109
|
-
poll_attempts += 1
|
|
110
|
-
is_pending = PENDING_STATUSES.include?(batch_job[:status])
|
|
111
|
-
end while is_pending and poll_attempts < MAX_POLL_ATTEMPTS
|
|
112
|
-
|
|
113
|
-
if is_pending
|
|
114
|
-
raise StandardError,
|
|
115
|
-
"Job is still in pending state after polling %d times." %
|
|
116
|
-
MAX_POLL_ATTEMPTS
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
unless batch_job[:processing_errors].nil?
|
|
120
|
-
batch_job[:processing_errors].each_with_index do |processing_error, i|
|
|
121
|
-
puts ("Processing error [%d]: errorType=%s, trigger=%s, errorString=%s" +
|
|
122
|
-
"fieldPath=%s, reason=%s") % [i, processing_error[:api_error_type],
|
|
123
|
-
processing_error[:trigger], processing_error[:error_string],
|
|
124
|
-
processing_error[:field_path], processing_error[:reason]]
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
unless batch_job[:download_url].nil? or batch_job[:download_url][:url].nil?
|
|
129
|
-
mutate_response = batch_job_utils.get_job_results(
|
|
130
|
-
batch_job[:download_url][:url])
|
|
131
|
-
puts "Downloaded results from '%s':" % batch_job[:download_url][:url]
|
|
132
|
-
mutate_response.each do |mutate_result|
|
|
133
|
-
outcome = "FAILURE"
|
|
134
|
-
outcome = "SUCCESS" if mutate_result[:error_list].nil?
|
|
135
|
-
puts " Operation [%d] - %s" % [mutate_result[:index], outcome]
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
# Custom class to generate temporary negative IDs for created entities to
|
|
141
|
-
# reference each other.
|
|
142
|
-
class TempIdGenerator
|
|
143
|
-
def initialize()
|
|
144
|
-
@counter = -1
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
def next()
|
|
148
|
-
ret = @counter
|
|
149
|
-
@counter -= 1
|
|
150
|
-
return ret
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def get_time_microseconds()
|
|
155
|
-
return (Time.now.to_f * 1000000).to_i
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def build_budget_operation(temp_id_generator)
|
|
159
|
-
budget = {
|
|
160
|
-
:budget_id => temp_id_generator.next,
|
|
161
|
-
:name => "Interplanetary Cruise %d" % get_time_microseconds(),
|
|
162
|
-
:amount => {
|
|
163
|
-
:micro_amount => 50000000
|
|
164
|
-
},
|
|
165
|
-
:delivery_method => 'STANDARD',
|
|
166
|
-
:period => 'DAILY'
|
|
167
|
-
}
|
|
168
|
-
budget_operation = {
|
|
169
|
-
# The xsi_type of the operation can usually be guessed by the API because
|
|
170
|
-
# a given service only handles one type of operation. However, batch jobs
|
|
171
|
-
# process operations of different types, so the xsi_type must always be
|
|
172
|
-
# explicitly defined for these operations.
|
|
173
|
-
:xsi_type => 'BudgetOperation',
|
|
174
|
-
:operator => 'ADD',
|
|
175
|
-
:operand => budget
|
|
176
|
-
}
|
|
177
|
-
return budget_operation
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def build_campaign_operations(temp_id_generator, budget_operation)
|
|
181
|
-
budget_id = budget_operation[:operand][:budget_id]
|
|
182
|
-
|
|
183
|
-
operations = []
|
|
184
|
-
NUMBER_OF_CAMPAIGNS_TO_ADD.times do
|
|
185
|
-
campaign = {
|
|
186
|
-
:name => "Batch Campaign %s" % get_time_microseconds(),
|
|
187
|
-
:status => 'PAUSED',
|
|
188
|
-
:id => temp_id_generator.next,
|
|
189
|
-
:advertising_channel_type => 'SEARCH',
|
|
190
|
-
:budget => {
|
|
191
|
-
:budget_id => budget_id
|
|
192
|
-
},
|
|
193
|
-
:bidding_strategy_configuration => {
|
|
194
|
-
:bidding_strategy_type => 'MANUAL_CPC',
|
|
195
|
-
# You can optionally provide a bidding scheme in place of the type.
|
|
196
|
-
:bidding_scheme => {
|
|
197
|
-
:xsi_type => 'ManualCpcBiddingScheme',
|
|
198
|
-
:enhanced_cpc_enabled => false
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
operation = {
|
|
203
|
-
:xsi_type => 'CampaignOperation',
|
|
204
|
-
:operator => 'ADD',
|
|
205
|
-
:operand => campaign
|
|
206
|
-
}
|
|
207
|
-
operations << operation
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
return operations
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
def build_campaign_criterion_operations(campaign_operations)
|
|
214
|
-
operations = []
|
|
215
|
-
campaign_operations.each do |campaign_operation|
|
|
216
|
-
keyword = {
|
|
217
|
-
:xsi_type => 'Keyword',
|
|
218
|
-
:match_type => 'BROAD',
|
|
219
|
-
:text => 'venus'
|
|
220
|
-
}
|
|
221
|
-
negative_criterion = {
|
|
222
|
-
:xsi_type => 'NegativeCampaignCriterion',
|
|
223
|
-
:campaign_id => campaign_operation[:operand][:id],
|
|
224
|
-
:criterion => keyword
|
|
225
|
-
}
|
|
226
|
-
operation = {
|
|
227
|
-
:xsi_type => 'CampaignCriterionOperation',
|
|
228
|
-
:operator => 'ADD',
|
|
229
|
-
:operand => negative_criterion
|
|
230
|
-
}
|
|
231
|
-
operations << operation
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
return operations
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
def build_ad_group_operations(temp_id_generator, campaign_operations)
|
|
238
|
-
operations = []
|
|
239
|
-
campaign_operations.each do |campaign_operation|
|
|
240
|
-
NUMBER_OF_ADGROUPS_TO_ADD.times do
|
|
241
|
-
ad_group = {
|
|
242
|
-
:campaign_id => campaign_operation[:operand][:id],
|
|
243
|
-
:id => temp_id_generator.next,
|
|
244
|
-
:name => "Batch Ad Group %s" % get_time_microseconds(),
|
|
245
|
-
:bidding_strategy_configuration => {
|
|
246
|
-
:bids => [
|
|
247
|
-
{
|
|
248
|
-
:xsi_type => 'CpcBid',
|
|
249
|
-
:bid => {:micro_amount => 10000000}
|
|
250
|
-
}
|
|
251
|
-
]
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
operation = {
|
|
255
|
-
:xsi_type => 'AdGroupOperation',
|
|
256
|
-
:operator => 'ADD',
|
|
257
|
-
:operand => ad_group
|
|
258
|
-
}
|
|
259
|
-
operations << operation
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
return operations
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
def build_ad_group_criterion_operations(ad_group_operations)
|
|
267
|
-
operations = []
|
|
268
|
-
ad_group_operations.each do |ad_group_operation|
|
|
269
|
-
NUMBER_OF_KEYWORDS_TO_ADD.times do |i|
|
|
270
|
-
text = "mars%d" % i
|
|
271
|
-
|
|
272
|
-
# Make 50% of keywords invalid to demonstrate error handling.
|
|
273
|
-
text = text + "!!!" if i % 2 == 0
|
|
274
|
-
keyword = {
|
|
275
|
-
:xsi_type => 'Keyword',
|
|
276
|
-
:text => text,
|
|
277
|
-
:match_type => 'BROAD'
|
|
278
|
-
}
|
|
279
|
-
biddable_criterion = {
|
|
280
|
-
:xsi_type => 'BiddableAdGroupCriterion',
|
|
281
|
-
:ad_group_id => ad_group_operation[:operand][:id],
|
|
282
|
-
:criterion => keyword
|
|
283
|
-
}
|
|
284
|
-
operation = {
|
|
285
|
-
:xsi_type => 'AdGroupCriterionOperation',
|
|
286
|
-
:operator => 'ADD',
|
|
287
|
-
:operand => biddable_criterion
|
|
288
|
-
}
|
|
289
|
-
operations << operation
|
|
290
|
-
end
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
return operations
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
def build_ad_group_ad_operations(ad_group_operations)
|
|
297
|
-
operations = []
|
|
298
|
-
ad_group_operations.each do |ad_group_operation|
|
|
299
|
-
text_ad = {
|
|
300
|
-
:xsi_type => 'TextAd',
|
|
301
|
-
:headline => 'Luxury Cruise to Mars',
|
|
302
|
-
:description1 => 'Visit the Red Planet in style.',
|
|
303
|
-
:description2 => 'Low-gravity fun for everyone!',
|
|
304
|
-
:display_url => 'www.example.com',
|
|
305
|
-
:final_urls => ['http://www.example.com/1']
|
|
306
|
-
}
|
|
307
|
-
ad_group_ad = {
|
|
308
|
-
:ad_group_id => ad_group_operation[:operand][:id],
|
|
309
|
-
:ad => text_ad
|
|
310
|
-
}
|
|
311
|
-
operation = {
|
|
312
|
-
:xsi_type => 'AdGroupAdOperation',
|
|
313
|
-
:operator => 'ADD',
|
|
314
|
-
:operand => ad_group_ad
|
|
315
|
-
}
|
|
316
|
-
operations << operation
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
return operations
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
if __FILE__ == $0
|
|
323
|
-
API_VERSION = :v201509
|
|
324
|
-
NUMBER_OF_CAMPAIGNS_TO_ADD = 2
|
|
325
|
-
NUMBER_OF_ADGROUPS_TO_ADD = 2
|
|
326
|
-
NUMBER_OF_KEYWORDS_TO_ADD = 5
|
|
327
|
-
MAX_POLL_ATTEMPTS = 5
|
|
328
|
-
PENDING_STATUSES = ['ACTIVE', 'AWAITING_FILE']
|
|
329
|
-
|
|
330
|
-
begin
|
|
331
|
-
add_complete_campaigns_using_batch_job()
|
|
332
|
-
|
|
333
|
-
# Authorization error.
|
|
334
|
-
rescue AdsCommon::Errors::OAuth2VerificationRequired => e
|
|
335
|
-
puts "Authorization credentials are not valid. Edit adwords_api.yml for " +
|
|
336
|
-
"OAuth2 client ID and secret and run misc/setup_oauth2.rb example " +
|
|
337
|
-
"to retrieve and store OAuth2 tokens."
|
|
338
|
-
puts "See this wiki page for more details:\n\n " +
|
|
339
|
-
'https://github.com/googleads/google-api-ads-ruby/wiki/OAuth2'
|
|
340
|
-
|
|
341
|
-
# HTTP errors.
|
|
342
|
-
rescue AdsCommon::Errors::HttpError => e
|
|
343
|
-
puts "HTTP Error: %s" % e
|
|
344
|
-
|
|
345
|
-
# API errors.
|
|
346
|
-
rescue AdwordsApi::Errors::ApiException => e
|
|
347
|
-
puts "Message: %s" % e.message
|
|
348
|
-
puts 'Errors:'
|
|
349
|
-
e.errors.each_with_index do |error, index|
|
|
350
|
-
puts "\tError [%d]:" % (index + 1)
|
|
351
|
-
error.each do |field, value|
|
|
352
|
-
puts "\t\t%s: %s" % [field, value]
|
|
353
|
-
end
|
|
354
|
-
end
|
|
355
|
-
end
|
|
356
|
-
end
|