google-dfp-api 0.6.2 → 0.6.3
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.
- data/ChangeLog +3 -0
- data/README +15 -6
- data/dfp_api.yml +6 -5
- data/examples/v201302/activity_group_service/get_all_activity_groups.rb +0 -0
- data/examples/v201302/activity_service/get_all_activities.rb +0 -0
- data/examples/v201302/contact_service/get_uninvited_contacts.rb +0 -0
- data/examples/v201302/report_service/display_report.rb +0 -0
- data/examples/v201302/report_service/run_reach_report.rb +1 -1
- data/examples/v201306/activity_group_service/create_activity_groups.rb +94 -0
- data/examples/v201306/activity_group_service/get_active_activity_groups.rb +100 -0
- data/examples/v201306/activity_group_service/get_all_activity_groups.rb +95 -0
- data/examples/v201306/activity_group_service/update_activity_groups.rb +87 -0
- data/examples/v201306/activity_service/create_activities.rb +91 -0
- data/examples/v201306/activity_service/get_active_activities.rb +107 -0
- data/examples/v201306/activity_service/get_all_activities.rb +144 -0
- data/examples/v201306/activity_service/update_activities.rb +85 -0
- data/examples/v201306/audience_segment_service/get_all_audience_segments.rb +93 -0
- data/examples/v201306/common/error_handling.rb +76 -0
- data/examples/v201306/common/oauth2_handling.rb +128 -0
- data/examples/v201306/common/oauth2_jwt_handling.rb +107 -0
- data/examples/v201306/company_service/create_companies.rb +81 -0
- data/examples/v201306/company_service/get_all_companies.rb +92 -0
- data/examples/v201306/company_service/get_companies_by_statement.rb +88 -0
- data/examples/v201306/company_service/get_company.rb +72 -0
- data/examples/v201306/company_service/update_companies.rb +102 -0
- data/examples/v201306/contact_service/create_contacts.rb +95 -0
- data/examples/v201306/contact_service/get_all_contacts.rb +92 -0
- data/examples/v201306/contact_service/get_uninvited_contacts.rb +102 -0
- data/examples/v201306/contact_service/update_contacts.rb +84 -0
- data/examples/v201306/content_service/get_all_content.rb +94 -0
- data/examples/v201306/content_service/get_content_by_category.rb +143 -0
- data/examples/v201306/creative_service/copy_image_creatives.rb +115 -0
- data/examples/v201306/creative_service/create_creative_from_template.rb +139 -0
- data/examples/v201306/creative_service/create_creatives.rb +112 -0
- data/examples/v201306/creative_service/create_custom_creative.rb +104 -0
- data/examples/v201306/creative_service/get_all_creatives.rb +93 -0
- data/examples/v201306/creative_service/get_creative.rb +72 -0
- data/examples/v201306/creative_service/get_creatives_by_statement.rb +87 -0
- data/examples/v201306/creative_service/update_creatives.rb +96 -0
- data/examples/v201306/creative_set_service/associate_creative_set_to_line_item.rb +77 -0
- data/examples/v201306/creative_set_service/create_creative_set.rb +83 -0
- data/examples/v201306/creative_set_service/get_all_creative_sets.rb +94 -0
- data/examples/v201306/creative_set_service/get_creative_sets_by_statement.rb +90 -0
- data/examples/v201306/creative_set_service/update_creative_sets.rb +85 -0
- data/examples/v201306/creative_template_service/get_all_creative_templates.rb +94 -0
- data/examples/v201306/creative_template_service/get_creative_template.rb +74 -0
- data/examples/v201306/creative_template_service/get_creative_templates_by_statement.rb +80 -0
- data/examples/v201306/creative_wrapper_service/create_creative_wrappers.rb +89 -0
- data/examples/v201306/creative_wrapper_service/deactivate_creative_wrapper.rb +102 -0
- data/examples/v201306/creative_wrapper_service/get_all_creative_wrappers.rb +94 -0
- data/examples/v201306/creative_wrapper_service/get_creative_wrappers_by_statement.rb +88 -0
- data/examples/v201306/creative_wrapper_service/update_creative_wrappers.rb +86 -0
- data/examples/v201306/custom_field_service/create_custom_field_options.rb +87 -0
- data/examples/v201306/custom_field_service/create_custom_fields.rb +86 -0
- data/examples/v201306/custom_field_service/deactivate_all_line_item_custom_fields.rb +112 -0
- data/examples/v201306/custom_field_service/get_all_custom_fields.rb +102 -0
- data/examples/v201306/custom_field_service/get_all_line_item_custom_fields.rb +86 -0
- data/examples/v201306/custom_field_service/set_line_item_custom_field_value.rb +135 -0
- data/examples/v201306/custom_field_service/update_custom_fields.rb +84 -0
- data/examples/v201306/custom_targeting_service/create_custom_targeting_keys_and_values.rb +140 -0
- data/examples/v201306/custom_targeting_service/delete_custom_targeting_keys.rb +121 -0
- data/examples/v201306/custom_targeting_service/delete_custom_targeting_values.rb +125 -0
- data/examples/v201306/custom_targeting_service/get_all_custom_targeting_keys_and_values.rb +148 -0
- data/examples/v201306/custom_targeting_service/get_custom_targeting_keys_by_statement.rb +92 -0
- data/examples/v201306/custom_targeting_service/get_custom_targeting_values_by_statement.rb +98 -0
- data/examples/v201306/custom_targeting_service/update_custom_targeting_keys.rb +94 -0
- data/examples/v201306/custom_targeting_service/update_custom_targeting_values.rb +106 -0
- data/examples/v201306/forecast_service/get_forecast.rb +107 -0
- data/examples/v201306/forecast_service/get_forecast_by_id.rb +80 -0
- data/examples/v201306/inventory_service/create_ad_units.rb +101 -0
- data/examples/v201306/inventory_service/create_mobile_ad_unit.rb +101 -0
- data/examples/v201306/inventory_service/create_video_ad_unit.rb +108 -0
- data/examples/v201306/inventory_service/deactivate_ad_units.rb +119 -0
- data/examples/v201306/inventory_service/get_ad_unit.rb +72 -0
- data/examples/v201306/inventory_service/get_ad_unit_sizes.rb +85 -0
- data/examples/v201306/inventory_service/get_ad_units_by_statement.rb +96 -0
- data/examples/v201306/inventory_service/get_all_ad_units.rb +93 -0
- data/examples/v201306/inventory_service/update_ad_units.rb +96 -0
- data/examples/v201306/label_service/create_labels.rb +83 -0
- data/examples/v201306/label_service/deactivate_labels.rb +118 -0
- data/examples/v201306/label_service/get_all_labels.rb +95 -0
- data/examples/v201306/label_service/get_label.rb +76 -0
- data/examples/v201306/label_service/get_labels_by_statement.rb +81 -0
- data/examples/v201306/label_service/update_labels.rb +102 -0
- data/examples/v201306/line_item_creative_association_service/create_licas.rb +94 -0
- data/examples/v201306/line_item_creative_association_service/deactivate_licas.rb +127 -0
- data/examples/v201306/line_item_creative_association_service/get_all_licas.rb +98 -0
- data/examples/v201306/line_item_creative_association_service/get_lica.rb +77 -0
- data/examples/v201306/line_item_creative_association_service/get_licas_by_statement.rb +91 -0
- data/examples/v201306/line_item_creative_association_service/update_licas.rb +91 -0
- data/examples/v201306/line_item_service/activate_line_items.rb +131 -0
- data/examples/v201306/line_item_service/create_line_items.rb +177 -0
- data/examples/v201306/line_item_service/create_mobile_line_item.rb +135 -0
- data/examples/v201306/line_item_service/create_video_line_item.rb +158 -0
- data/examples/v201306/line_item_service/get_all_line_items.rb +94 -0
- data/examples/v201306/line_item_service/get_line_item.rb +74 -0
- data/examples/v201306/line_item_service/get_line_items_by_statement.rb +93 -0
- data/examples/v201306/line_item_service/get_recently_updated_line_items.rb +98 -0
- data/examples/v201306/line_item_service/target_custom_criteria.rb +129 -0
- data/examples/v201306/line_item_service/update_line_items.rb +109 -0
- data/examples/v201306/network_service/get_all_networks.rb +74 -0
- data/examples/v201306/network_service/get_current_network.rb +66 -0
- data/examples/v201306/network_service/make_test_network.rb +79 -0
- data/examples/v201306/order_service/approve_orders.rb +122 -0
- data/examples/v201306/order_service/create_orders.rb +92 -0
- data/examples/v201306/order_service/get_all_orders.rb +93 -0
- data/examples/v201306/order_service/get_order.rb +74 -0
- data/examples/v201306/order_service/get_orders_by_statement.rb +90 -0
- data/examples/v201306/order_service/update_orders.rb +97 -0
- data/examples/v201306/placement_service/create_placements.rb +131 -0
- data/examples/v201306/placement_service/deactivate_placements.rb +118 -0
- data/examples/v201306/placement_service/get_all_placements.rb +93 -0
- data/examples/v201306/placement_service/get_placement.rb +74 -0
- data/examples/v201306/placement_service/get_placements_by_statement.rb +86 -0
- data/examples/v201306/placement_service/update_placements.rb +97 -0
- data/examples/v201306/publisher_query_language_service/get_all_cities.rb +104 -0
- data/examples/v201306/report_service/display_report.rb +81 -0
- data/examples/v201306/report_service/download_report.rb +81 -0
- data/examples/v201306/report_service/run_delivery_report.rb +103 -0
- data/examples/v201306/report_service/run_inventory_report.rb +96 -0
- data/examples/v201306/report_service/run_merged_delivery_report.rb +94 -0
- data/examples/v201306/report_service/run_reach_report.rb +87 -0
- data/examples/v201306/report_service/run_report_with_custom_fields.rb +135 -0
- data/examples/v201306/report_service/run_sales_report.rb +92 -0
- data/examples/v201306/suggested_ad_unit_service/approve_all_suggested_ad_units.rb +109 -0
- data/examples/v201306/suggested_ad_unit_service/get_all_suggested_ad_units.rb +96 -0
- data/examples/v201306/suggested_ad_unit_service/get_suggested_ad_unit.rb +75 -0
- data/examples/v201306/suggested_ad_unit_service/get_suggested_ad_units_by_statement.rb +92 -0
- data/examples/v201306/team_service/create_teams.rb +83 -0
- data/examples/v201306/team_service/get_all_teams.rb +92 -0
- data/examples/v201306/team_service/get_team.rb +74 -0
- data/examples/v201306/team_service/get_teams_by_statement.rb +78 -0
- data/examples/v201306/team_service/update_teams.rb +97 -0
- data/examples/v201306/user_service/create_users.rb +89 -0
- data/examples/v201306/user_service/deactivate_users.rb +97 -0
- data/examples/v201306/user_service/get_all_roles.rb +73 -0
- data/examples/v201306/user_service/get_all_users.rb +93 -0
- data/examples/v201306/user_service/get_current_user.rb +66 -0
- data/examples/v201306/user_service/get_user.rb +73 -0
- data/examples/v201306/user_service/get_users_by_statement.rb +79 -0
- data/examples/v201306/user_service/update_users.rb +89 -0
- data/examples/v201306/user_team_association_service/create_user_team_associations.rb +86 -0
- data/examples/v201306/user_team_association_service/delete_user_team_associations.rb +111 -0
- data/examples/v201306/user_team_association_service/get_all_user_team_associations.rb +94 -0
- data/examples/v201306/user_team_association_service/get_user_team_association.rb +76 -0
- data/examples/v201306/user_team_association_service/get_user_team_associations_by_statement.rb +94 -0
- data/examples/v201306/user_team_association_service/update_user_team_associations.rb +102 -0
- data/lib/dfp_api.rb +3 -3
- data/lib/dfp_api/api_config.rb +24 -4
- data/lib/dfp_api/v201306/activity_group_service.rb +54 -0
- data/lib/dfp_api/v201306/activity_group_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/activity_service.rb +54 -0
- data/lib/dfp_api/v201306/activity_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/ad_rule_service.rb +58 -0
- data/lib/dfp_api/v201306/ad_rule_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/audience_segment_service.rb +34 -0
- data/lib/dfp_api/v201306/audience_segment_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/base_rate_service.rb +58 -0
- data/lib/dfp_api/v201306/base_rate_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/company_service.rb +54 -0
- data/lib/dfp_api/v201306/company_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/contact_service.rb +54 -0
- data/lib/dfp_api/v201306/contact_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/content_bundle_service.rb +58 -0
- data/lib/dfp_api/v201306/content_bundle_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/content_service.rb +38 -0
- data/lib/dfp_api/v201306/content_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/creative_service.rb +54 -0
- data/lib/dfp_api/v201306/creative_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/creative_set_service.rb +46 -0
- data/lib/dfp_api/v201306/creative_set_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/creative_template_service.rb +38 -0
- data/lib/dfp_api/v201306/creative_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/creative_wrapper_service.rb +58 -0
- data/lib/dfp_api/v201306/creative_wrapper_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/custom_field_service.rb +78 -0
- data/lib/dfp_api/v201306/custom_field_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/custom_targeting_service.rb +62 -0
- data/lib/dfp_api/v201306/custom_targeting_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/forecast_service.rb +38 -0
- data/lib/dfp_api/v201306/forecast_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/inventory_service.rb +62 -0
- data/lib/dfp_api/v201306/inventory_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/label_service.rb +58 -0
- data/lib/dfp_api/v201306/label_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/line_item_creative_association_service.rb +62 -0
- data/lib/dfp_api/v201306/line_item_creative_association_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/line_item_service.rb +58 -0
- data/lib/dfp_api/v201306/line_item_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/line_item_template_service.rb +34 -0
- data/lib/dfp_api/v201306/line_item_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/network_service.rb +46 -0
- data/lib/dfp_api/v201306/network_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/order_service.rb +58 -0
- data/lib/dfp_api/v201306/order_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/placement_service.rb +58 -0
- data/lib/dfp_api/v201306/placement_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/product_service.rb +50 -0
- data/lib/dfp_api/v201306/product_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/product_template_service.rb +58 -0
- data/lib/dfp_api/v201306/product_template_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/proposal_line_item_service.rb +58 -0
- data/lib/dfp_api/v201306/proposal_line_item_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/proposal_service.rb +58 -0
- data/lib/dfp_api/v201306/proposal_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/publisher_query_language_service.rb +34 -0
- data/lib/dfp_api/v201306/publisher_query_language_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/rate_card_customization_service.rb +58 -0
- data/lib/dfp_api/v201306/rate_card_customization_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/rate_card_service.rb +58 -0
- data/lib/dfp_api/v201306/rate_card_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/reconciliation_order_report_service.rb +42 -0
- data/lib/dfp_api/v201306/reconciliation_order_report_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/reconciliation_report_row_service.rb +38 -0
- data/lib/dfp_api/v201306/reconciliation_report_row_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/reconciliation_report_service.rb +46 -0
- data/lib/dfp_api/v201306/reconciliation_report_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/report_service.rb +46 -0
- data/lib/dfp_api/v201306/report_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/suggested_ad_unit_service.rb +42 -0
- data/lib/dfp_api/v201306/suggested_ad_unit_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/team_service.rb +54 -0
- data/lib/dfp_api/v201306/team_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/user_service.rb +66 -0
- data/lib/dfp_api/v201306/user_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/user_team_association_service.rb +58 -0
- data/lib/dfp_api/v201306/user_team_association_service_registry.rb +46 -0
- data/lib/dfp_api/v201306/workflow_action_service.rb +38 -0
- data/lib/dfp_api/v201306/workflow_action_service_registry.rb +46 -0
- data/lib/dfp_api/version.rb +1 -1
- data/test/bugs/test_issue_00000016.rb +3 -3
- data/test/dfp_api/test_dfp_api.rb +30 -6
- data/test/suite_unittests.rb +6 -6
- metadata +1218 -999
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Encoding: utf-8
|
|
3
|
+
#
|
|
4
|
+
# Author:: api.dklimkin@gmail.com (Danial Klimkin)
|
|
5
|
+
#
|
|
6
|
+
# Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
|
|
7
|
+
#
|
|
8
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
17
|
+
# implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
# This example creates custom fields. To determine which custom fields exist,
|
|
22
|
+
# run get_all_custom_fields.rb.
|
|
23
|
+
#
|
|
24
|
+
# Tags: CustomFieldService.createCustomFields
|
|
25
|
+
|
|
26
|
+
require 'dfp_api'
|
|
27
|
+
|
|
28
|
+
API_VERSION = :v201306
|
|
29
|
+
|
|
30
|
+
def create_custom_fields()
|
|
31
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
32
|
+
dfp = DfpApi::Api.new
|
|
33
|
+
|
|
34
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
35
|
+
# the configuration file or provide your own logger:
|
|
36
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
37
|
+
|
|
38
|
+
# Get the CustomFieldService.
|
|
39
|
+
custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
|
|
40
|
+
|
|
41
|
+
# Create local custom field objects.
|
|
42
|
+
custom_fields = [
|
|
43
|
+
{
|
|
44
|
+
:name => 'Customer comments',
|
|
45
|
+
:entity_type => 'LINE_ITEM',
|
|
46
|
+
:data_type => 'STRING',
|
|
47
|
+
:visibility => 'FULL'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
:name => 'Internal approval status',
|
|
51
|
+
:entity_type => 'LINE_ITEM',
|
|
52
|
+
:data_type => 'DROP_DOWN',
|
|
53
|
+
:visibility => 'FULL'
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
# Create the custom fields on the server.
|
|
58
|
+
return_custom_fields =
|
|
59
|
+
custom_field_service.create_custom_fields(custom_fields)
|
|
60
|
+
|
|
61
|
+
return_custom_fields.each do |custom_field|
|
|
62
|
+
puts "Custom field with ID: %d and name: %s was created." %
|
|
63
|
+
[custom_field[:id], custom_field[:name]]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
if __FILE__ == $0
|
|
68
|
+
begin
|
|
69
|
+
create_custom_fields()
|
|
70
|
+
|
|
71
|
+
# HTTP errors.
|
|
72
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
73
|
+
puts "HTTP Error: %s" % e
|
|
74
|
+
|
|
75
|
+
# API errors.
|
|
76
|
+
rescue DfpApi::Errors::ApiException => e
|
|
77
|
+
puts "Message: %s" % e.message
|
|
78
|
+
puts 'Errors:'
|
|
79
|
+
e.errors.each_with_index do |error, index|
|
|
80
|
+
puts "\tError [%d]:" % (index + 1)
|
|
81
|
+
error.each do |field, value|
|
|
82
|
+
puts "\t\t%s: %s" % [field, value]
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Encoding: utf-8
|
|
3
|
+
#
|
|
4
|
+
# Author:: api.dklimkin@gmail.com (Danial Klimkin)
|
|
5
|
+
#
|
|
6
|
+
# Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
|
|
7
|
+
#
|
|
8
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
17
|
+
# implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
# This example deactivates all active line item custom fields. To determine
|
|
22
|
+
# which custom fields exist, run get_all_custom_fields.rb.
|
|
23
|
+
#
|
|
24
|
+
# Tags: CustomFieldService.getCustomFieldsByStatement
|
|
25
|
+
# Tags: CustomFieldService.performCustomFieldAction
|
|
26
|
+
|
|
27
|
+
require 'dfp_api'
|
|
28
|
+
|
|
29
|
+
API_VERSION = :v201306
|
|
30
|
+
PAGE_SIZE = 500
|
|
31
|
+
|
|
32
|
+
def deactivate_all_line_item_custom_fields()
|
|
33
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
34
|
+
dfp = DfpApi::Api.new
|
|
35
|
+
|
|
36
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
37
|
+
# the configuration file or provide your own logger:
|
|
38
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
39
|
+
|
|
40
|
+
# Get the CustomFieldService.
|
|
41
|
+
custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
|
|
42
|
+
|
|
43
|
+
# Create statement text to select active ad units.
|
|
44
|
+
statement_text = 'WHERE entityType = :entity_type AND isActive = :is_active'
|
|
45
|
+
statement = {
|
|
46
|
+
:values => [
|
|
47
|
+
{:key => 'entity_type',
|
|
48
|
+
:value => {:value => 'LINE_ITEM', :xsi_type => 'TextValue'}},
|
|
49
|
+
{:key => 'is_active',
|
|
50
|
+
:value => {:value => true, :xsi_type => 'BooleanValue'}}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Define initial values.
|
|
55
|
+
offset = 0
|
|
56
|
+
page = {}
|
|
57
|
+
|
|
58
|
+
begin
|
|
59
|
+
# Create a statement to get one page with the current offset.
|
|
60
|
+
statement[:query] = statement_text +
|
|
61
|
+
" LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]
|
|
62
|
+
|
|
63
|
+
# Get custom fields by statement.
|
|
64
|
+
page = custom_field_service.get_custom_fields_by_statement(statement)
|
|
65
|
+
|
|
66
|
+
if page[:results]
|
|
67
|
+
# Increase query offset by page size.
|
|
68
|
+
offset += PAGE_SIZE
|
|
69
|
+
start_index = page[:start_index]
|
|
70
|
+
|
|
71
|
+
page[:results].each_with_index do |custom_field, index|
|
|
72
|
+
puts "%d) Custom field with ID: %d and name: '%s' will be deactivated" %
|
|
73
|
+
[index + start_index, custom_field[:id], custom_field[:name]]
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end while offset < page[:total_result_set_size]
|
|
77
|
+
|
|
78
|
+
# Update statement for action.
|
|
79
|
+
statement[:query] = statement_text
|
|
80
|
+
|
|
81
|
+
# Perform action.
|
|
82
|
+
result = custom_field_service.perform_custom_field_action(
|
|
83
|
+
{:xsi_type => 'DeactivateCustomFields'}, statement)
|
|
84
|
+
|
|
85
|
+
# Display results.
|
|
86
|
+
if result and result[:num_changes] > 0
|
|
87
|
+
puts "Number of custom fields deactivated: %d" % result[:num_changes]
|
|
88
|
+
else
|
|
89
|
+
puts 'No custom fields were deactivated.'
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
if __FILE__ == $0
|
|
94
|
+
begin
|
|
95
|
+
deactivate_all_line_item_custom_fields()
|
|
96
|
+
|
|
97
|
+
# HTTP errors.
|
|
98
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
99
|
+
puts "HTTP Error: %s" % e
|
|
100
|
+
|
|
101
|
+
# API errors.
|
|
102
|
+
rescue DfpApi::Errors::ApiException => e
|
|
103
|
+
puts "Message: %s" % e.message
|
|
104
|
+
puts 'Errors:'
|
|
105
|
+
e.errors.each_with_index do |error, index|
|
|
106
|
+
puts "\tError [%d]:" % (index + 1)
|
|
107
|
+
error.each do |field, value|
|
|
108
|
+
puts "\t\t%s: %s" % [field, value]
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Encoding: utf-8
|
|
3
|
+
#
|
|
4
|
+
# Author:: api.dklimkin@gmail.com (Danial Klimkin)
|
|
5
|
+
#
|
|
6
|
+
# Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
|
|
7
|
+
#
|
|
8
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
17
|
+
# implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
# This example gets all custom fields. To create custom fields, run
|
|
22
|
+
# create_custom_fields.rb.
|
|
23
|
+
#
|
|
24
|
+
# Tags: CustomFieldService.getCustomFieldsByStatement
|
|
25
|
+
|
|
26
|
+
require 'dfp_api'
|
|
27
|
+
|
|
28
|
+
API_VERSION = :v201306
|
|
29
|
+
PAGE_SIZE = 500
|
|
30
|
+
|
|
31
|
+
def get_all_custom_fields()
|
|
32
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
33
|
+
dfp = DfpApi::Api.new
|
|
34
|
+
|
|
35
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
36
|
+
# the configuration file or provide your own logger:
|
|
37
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
38
|
+
|
|
39
|
+
# Get the CustomFieldService.
|
|
40
|
+
custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
|
|
41
|
+
|
|
42
|
+
# Define initial values.
|
|
43
|
+
offset = 0
|
|
44
|
+
page = {}
|
|
45
|
+
|
|
46
|
+
begin
|
|
47
|
+
# Create a statement to get one page with current offset.
|
|
48
|
+
statement = {:query => "LIMIT %d OFFSET %d" % [PAGE_SIZE, offset]}
|
|
49
|
+
|
|
50
|
+
# Get custom fields by statement.
|
|
51
|
+
page = custom_field_service.get_custom_fields_by_statement(statement)
|
|
52
|
+
|
|
53
|
+
if page[:results]
|
|
54
|
+
# Increase query offset by page size.
|
|
55
|
+
offset += PAGE_SIZE
|
|
56
|
+
|
|
57
|
+
# Get the start index for printout.
|
|
58
|
+
start_index = page[:start_index]
|
|
59
|
+
|
|
60
|
+
# Print details about each custom field in results.
|
|
61
|
+
page[:results].each_with_index do |custom_field, index|
|
|
62
|
+
if custom_field[:custom_field_type].eql?('DropDownCustomField')
|
|
63
|
+
drop_down_custom_field_strings = custom_field.include?(:options) ?
|
|
64
|
+
custom_field[:options].map {|option| option[:display_name]} : []
|
|
65
|
+
print ("%d) Drop-down custom field with ID %d, name '%s', and " +
|
|
66
|
+
"options [%s] was found.") %
|
|
67
|
+
[index + start_index, custom_field[:id], custom_field[:name],
|
|
68
|
+
drop_down_custom_field_strings.join(', ')]
|
|
69
|
+
else
|
|
70
|
+
puts "%d) Custom field ID: %d and name: '%s' was found" %
|
|
71
|
+
[index + start_index, custom_field[:id], custom_field[:name]]
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end while offset < page[:total_result_set_size]
|
|
76
|
+
|
|
77
|
+
# Print a footer.
|
|
78
|
+
if page.include?(:total_result_set_size)
|
|
79
|
+
puts "Total number of custom fields: %d" % page[:total_result_set_size]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
if __FILE__ == $0
|
|
84
|
+
begin
|
|
85
|
+
get_all_custom_fields()
|
|
86
|
+
|
|
87
|
+
# HTTP errors.
|
|
88
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
89
|
+
puts "HTTP Error: %s" % e
|
|
90
|
+
|
|
91
|
+
# API errors.
|
|
92
|
+
rescue DfpApi::Errors::ApiException => e
|
|
93
|
+
puts "Message: %s" % e.message
|
|
94
|
+
puts 'Errors:'
|
|
95
|
+
e.errors.each_with_index do |error, index|
|
|
96
|
+
puts "\tError [%d]:" % (index + 1)
|
|
97
|
+
error.each do |field, value|
|
|
98
|
+
puts "\t\t%s: %s" % [field, value]
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Encoding: utf-8
|
|
3
|
+
#
|
|
4
|
+
# Author:: api.dklimkin@gmail.com (Danial Klimkin)
|
|
5
|
+
#
|
|
6
|
+
# Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
|
|
7
|
+
#
|
|
8
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
17
|
+
# implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
# This example gets all custom fields that apply to line items. To create custom
|
|
22
|
+
# fields, run create_custom_fields.rb.
|
|
23
|
+
#
|
|
24
|
+
# Tags: CustomFieldService.getCustomFieldsByStatement
|
|
25
|
+
|
|
26
|
+
require 'dfp_api'
|
|
27
|
+
|
|
28
|
+
API_VERSION = :v201306
|
|
29
|
+
|
|
30
|
+
def get_all_line_item_custom_fields()
|
|
31
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
32
|
+
dfp = DfpApi::Api.new
|
|
33
|
+
|
|
34
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
35
|
+
# the configuration file or provide your own logger:
|
|
36
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
37
|
+
|
|
38
|
+
# Get the CustomFieldService.
|
|
39
|
+
custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
|
|
40
|
+
|
|
41
|
+
# Create statement to select only custom fields that apply to line items.
|
|
42
|
+
statement = {
|
|
43
|
+
:query => 'WHERE entityType = :entity_type',
|
|
44
|
+
:values => [
|
|
45
|
+
{:key => 'entity_type',
|
|
46
|
+
:value => {:value => 'LINE_ITEM', :xsi_type => 'TextValue'}}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# Get custom fields by statement.
|
|
51
|
+
page = custom_field_service.get_custom_fields_by_statement(statement)
|
|
52
|
+
|
|
53
|
+
if page[:results]
|
|
54
|
+
# Print details about each custom field in results.
|
|
55
|
+
page[:results].each_with_index do |custom_field, index|
|
|
56
|
+
puts "%d) Custom field with ID %d and name: '%s' was found." %
|
|
57
|
+
[index, custom_field[:id], custom_field[:name]]
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Print a footer.
|
|
62
|
+
if page.include?(:total_result_set_size)
|
|
63
|
+
puts "Total number of custom fields: %d" % page[:total_result_set_size]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
if __FILE__ == $0
|
|
68
|
+
begin
|
|
69
|
+
get_all_line_item_custom_fields()
|
|
70
|
+
|
|
71
|
+
# HTTP errors.
|
|
72
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
73
|
+
puts "HTTP Error: %s" % e
|
|
74
|
+
|
|
75
|
+
# API errors.
|
|
76
|
+
rescue DfpApi::Errors::ApiException => e
|
|
77
|
+
puts "Message: %s" % e.message
|
|
78
|
+
puts 'Errors:'
|
|
79
|
+
e.errors.each_with_index do |error, index|
|
|
80
|
+
puts "\tError [%d]:" % (index + 1)
|
|
81
|
+
error.each do |field, value|
|
|
82
|
+
puts "\t\t%s: %s" % [field, value]
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# Encoding: utf-8
|
|
3
|
+
#
|
|
4
|
+
# Author:: api.dklimkin@gmail.com (Danial Klimkin)
|
|
5
|
+
#
|
|
6
|
+
# Copyright:: Copyright 2012, Google Inc. All Rights Reserved.
|
|
7
|
+
#
|
|
8
|
+
# License:: Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
# you may not use this file except in compliance with the License.
|
|
10
|
+
# You may obtain a copy of the License at
|
|
11
|
+
#
|
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
#
|
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
17
|
+
# implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
# This example sets custom field values on a line item. To determine which
|
|
22
|
+
# custom fields exist, run get_all_custom_fields.rb. To determine which line
|
|
23
|
+
# items exist, run get_all_line_items.rb. To create custom field options, run
|
|
24
|
+
# create_custom_field_options.rb.
|
|
25
|
+
#
|
|
26
|
+
# Tags: CustomFieldService.getCustomField, LineItemService.getLineItem
|
|
27
|
+
|
|
28
|
+
require 'dfp_api'
|
|
29
|
+
|
|
30
|
+
API_VERSION = :v201306
|
|
31
|
+
|
|
32
|
+
def set_line_item_custom_field_value()
|
|
33
|
+
# Get DfpApi instance and load configuration from ~/dfp_api.yml.
|
|
34
|
+
dfp = DfpApi::Api.new
|
|
35
|
+
|
|
36
|
+
# To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
|
|
37
|
+
# the configuration file or provide your own logger:
|
|
38
|
+
# dfp.logger = Logger.new('dfp_xml.log')
|
|
39
|
+
|
|
40
|
+
# Get the CustomFieldService.
|
|
41
|
+
custom_field_service = dfp.service(:CustomFieldService, API_VERSION)
|
|
42
|
+
|
|
43
|
+
# Get the LineItemService.
|
|
44
|
+
line_item_service = dfp.service(:LineItemService, API_VERSION)
|
|
45
|
+
|
|
46
|
+
# Set the ID of the custom fields, custom field option, and line item.
|
|
47
|
+
custom_field_id = 'INSERT_CUSTOM_FIELD_ID_HERE'.to_i
|
|
48
|
+
drop_down_custom_field_id = 'INSERT_DROP_DOWN_CUSTOM_FIELD_ID_HERE'.to_i
|
|
49
|
+
custom_field_option_id = 'INSERT_CUSTOM_FIELD_OPTION_ID_HERE'.to_i
|
|
50
|
+
line_item_id = 'INSERT_LINE_ITEM_ID_HERE'.to_i
|
|
51
|
+
|
|
52
|
+
# Get custom field.
|
|
53
|
+
custom_field = custom_field_service.get_custom_field(custom_field_id)
|
|
54
|
+
|
|
55
|
+
# Get drop-down custom field.
|
|
56
|
+
drop_down_custom_field = custom_field_service.get_custom_field(
|
|
57
|
+
drop_down_custom_field_id)
|
|
58
|
+
|
|
59
|
+
# Get line item.
|
|
60
|
+
line_item = line_item_service.get_line_item(line_item_id)
|
|
61
|
+
|
|
62
|
+
if custom_field and drop_down_custom_field and line_item
|
|
63
|
+
# Create custom field values.
|
|
64
|
+
custom_field_value = {
|
|
65
|
+
:custom_field_id => custom_field[:id],
|
|
66
|
+
:type => 'CustomFieldValue',
|
|
67
|
+
:value => {:type => 'TextValue', :value => 'Custom field value'}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
drop_down_custom_field_value = {
|
|
71
|
+
:custom_field_id => drop_down_custom_field[:id],
|
|
72
|
+
:type => 'DropDownCustomFieldValue',
|
|
73
|
+
:custom_field_option_id => custom_field_option_id
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
custom_field_values = [custom_field_value, drop_down_custom_field_value]
|
|
77
|
+
old_custom_field_values = line_item.include?(:custom_field_values) ?
|
|
78
|
+
line_item[:custom_field_values] : []
|
|
79
|
+
|
|
80
|
+
# Only add existing custom field values for different custom fields than the
|
|
81
|
+
# ones you are setting.
|
|
82
|
+
old_custom_field_values.each do |old_custom_field_value|
|
|
83
|
+
unless custom_field_values.map {|value| value[:id]}.include?(
|
|
84
|
+
old_custom_field_value[:custom_field_id])
|
|
85
|
+
custom_field_values << old_custom_field_value
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
line_item[:custom_field_values] = custom_field_values
|
|
90
|
+
|
|
91
|
+
# Update the line item on the server.
|
|
92
|
+
return_line_items = line_item_service.update_line_items([line_item])
|
|
93
|
+
|
|
94
|
+
return_line_items.each do |return_line_item|
|
|
95
|
+
custom_field_value_strings = []
|
|
96
|
+
if return_line_item.include?(:custom_field_values)
|
|
97
|
+
return_line_item[:custom_field_values].each do |value|
|
|
98
|
+
if value[:base_custom_field_value_type].eql?('CustomFieldValue')
|
|
99
|
+
custom_field_value_strings << "{ID: %d, value: '%s'}" %
|
|
100
|
+
[value[:custom_field_id], value[:value][:value]]
|
|
101
|
+
end
|
|
102
|
+
if value[:base_custom_field_value_type].eql?(
|
|
103
|
+
'DropDownCustomFieldValue')
|
|
104
|
+
custom_field_value_strings <<
|
|
105
|
+
"{ID: %d, custom field option ID: %d}" %
|
|
106
|
+
[value[:custom_field_id], value[:custom_field_option_id]]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
puts "Line item ID %d set with custom field values: [%s]" %
|
|
111
|
+
[return_line_item[:id], custom_field_value_strings.join(', ')]
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
if __FILE__ == $0
|
|
117
|
+
begin
|
|
118
|
+
set_line_item_custom_field_value()
|
|
119
|
+
|
|
120
|
+
# HTTP errors.
|
|
121
|
+
rescue AdsCommon::Errors::HttpError => e
|
|
122
|
+
puts "HTTP Error: %s" % e
|
|
123
|
+
|
|
124
|
+
# API errors.
|
|
125
|
+
rescue DfpApi::Errors::ApiException => e
|
|
126
|
+
puts "Message: %s" % e.message
|
|
127
|
+
puts 'Errors:'
|
|
128
|
+
e.errors.each_with_index do |error, index|
|
|
129
|
+
puts "\tError [%d]:" % (index + 1)
|
|
130
|
+
error.each do |field, value|
|
|
131
|
+
puts "\t\t%s: %s" % [field, value]
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|