gnib-ads-api 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +121 -0
- data/Rakefile +38 -0
- data/lib/gnib-ads-api.rb +44 -0
- data/lib/gnib-ads-api.yml +355 -0
- data/lib/gnib-ads-api/api_exception.rb +42 -0
- data/lib/gnib-ads-api/client_proxy.rb +147 -0
- data/lib/gnib-ads-api/config.rb +75 -0
- data/lib/gnib-ads-api/constants.rb +150 -0
- data/lib/gnib-ads-api/data/accounts_info.rb +72 -0
- data/lib/gnib-ads-api/data/ad.rb +119 -0
- data/lib/gnib-ads-api/data/ad_group.rb +121 -0
- data/lib/gnib-ads-api/data/campaign.rb +40 -0
- data/lib/gnib-ads-api/data/report_request.rb +78 -0
- data/lib/gnib-ads-api/data/report_request_status.rb +48 -0
- data/lib/gnib-ads-api/data/reporting/account_performance_report_request.rb +176 -0
- data/lib/gnib-ads-api/data/reporting/campaign_performance_report_request.rb +186 -0
- data/lib/gnib-ads-api/data/reporting/helpers/column_helper.rb +65 -0
- data/lib/gnib-ads-api/data/reporting/helpers/filter_helper.rb +124 -0
- data/lib/gnib-ads-api/data/reporting/helpers/scope_helper.rb +51 -0
- data/lib/gnib-ads-api/data/reporting/helpers/time_helper.rb +69 -0
- data/lib/gnib-ads-api/data/reporting/performance_report_request.rb +78 -0
- data/lib/gnib-ads-api/data_object.rb +35 -0
- data/lib/gnib-ads-api/fault/ad_api_error.rb +15 -0
- data/lib/gnib-ads-api/fault/ad_api_fault_detail.rb +67 -0
- data/lib/gnib-ads-api/fault/api_fault_detail.rb +97 -0
- data/lib/gnib-ads-api/fault/application_fault.rb +18 -0
- data/lib/gnib-ads-api/fault/batch_error.rb +47 -0
- data/lib/gnib-ads-api/fault/operation_error.rb +22 -0
- data/lib/gnib-ads-api/fault/partial_errors.rb +75 -0
- data/lib/gnib-ads-api/service.rb +176 -0
- data/lib/gnib-ads-api/service/campaign_management.rb +483 -0
- data/lib/gnib-ads-api/service/customer_management.rb +83 -0
- data/lib/gnib-ads-api/service/reporting.rb +101 -0
- data/lib/gnib-ads-api/soap_hasheable.rb +160 -0
- data/lib/gnib-ads-api/version.rb +6 -0
- data/lib/locales/es.yml +174 -0
- data/lib/tasks/gnib-ads-api_tasks.rake +4 -0
- data/test/campaign_management_test.rb +463 -0
- data/test/customer_management_test.rb +44 -0
- data/test/data_object_test.rb +46 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +56 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/gnib-ads-api_test.rb +172 -0
- data/test/report_request_test.rb +312 -0
- data/test/reporting_test.rb +145 -0
- data/test/test_helper.rb +11 -0
- metadata +193 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module GnibAdsApi
|
3
|
+
|
4
|
+
|
5
|
+
# Public : This class represents the Customer Management Services
|
6
|
+
# defined in the Bing Ads API, to manage customer accounts
|
7
|
+
#
|
8
|
+
# Author:: jlopezn@neonline.cl
|
9
|
+
#
|
10
|
+
# Examples
|
11
|
+
# options = {
|
12
|
+
# :environment => :sandbox,
|
13
|
+
# :username => "username",
|
14
|
+
# :password => "pass",
|
15
|
+
# :developer_token => "SOME_TOKEN",
|
16
|
+
# :customer_id => "1234567",
|
17
|
+
# :account_id => "9876543" }
|
18
|
+
# service = GnibAdsApi::CustomerManagement.new(options)
|
19
|
+
class CustomerManagement < GnibAdsApi::Service
|
20
|
+
|
21
|
+
|
22
|
+
# Public : Constructor
|
23
|
+
#
|
24
|
+
# Author:: jlopezn@neonline.cl
|
25
|
+
#
|
26
|
+
# options - Hash with the parameters for the client proxy and the environment
|
27
|
+
#
|
28
|
+
# Examples
|
29
|
+
# options = {
|
30
|
+
# :environment => :sandbox,
|
31
|
+
# :username => "username",
|
32
|
+
# :password => "password",
|
33
|
+
# :developer_token => "DEV_TOKEN",
|
34
|
+
# :customer_id => "123456",
|
35
|
+
# :account_id => "654321"
|
36
|
+
# }
|
37
|
+
# service = GnibAdsApi::CustomerManagement.new(options)
|
38
|
+
def initialize(options={})
|
39
|
+
super(options)
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
#########################
|
44
|
+
## Operations Wrappers ##
|
45
|
+
#########################
|
46
|
+
|
47
|
+
# Public : Gets a list of objects that contains account identification information,
|
48
|
+
# for example the name and identifier of the account, for the specified customer.
|
49
|
+
#
|
50
|
+
# Author:: jlopezn@neonline.cl
|
51
|
+
#
|
52
|
+
# === Parameters
|
53
|
+
# +customer_id+ - identifier for the customer who owns the accounts. If nil, then the authentication customer id is used
|
54
|
+
# +only_parent_accounts+ - boolean to determine whether to return only the accounts that belong to the customer or to also
|
55
|
+
# return the accounts that the customer manages for other customers. Default false
|
56
|
+
#
|
57
|
+
# === Examples
|
58
|
+
# customer_management_service.get_accounts_info
|
59
|
+
# # => Array[GnibAdsApi::AccountsInfo]
|
60
|
+
#
|
61
|
+
# Returns:: Array of GnibAdsApi::AccountsInfo
|
62
|
+
#
|
63
|
+
# Raises:: exception
|
64
|
+
def get_accounts_info(customer_id=nil, only_parent_accounts=false)
|
65
|
+
response = call(:get_accounts_info,
|
66
|
+
{customer_id: customer_id || self.client_proxy.customer_id,
|
67
|
+
only_parent_accounts: only_parent_accounts.to_s})
|
68
|
+
response_hash = get_response_hash(response, __method__)
|
69
|
+
accounts = response_hash[:accounts_info][:account_info].map do |account_hash|
|
70
|
+
GnibAdsApi::AccountInfo.new(account_hash)
|
71
|
+
end
|
72
|
+
return accounts
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
private
|
77
|
+
def get_service_name
|
78
|
+
"customer_management"
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module GnibAdsApi
|
3
|
+
|
4
|
+
# Public : This class represents the Reporting Services
|
5
|
+
# defined in the Bing Ads API, to request and download reports
|
6
|
+
#
|
7
|
+
# Author:: jlopezn@neonline.cl
|
8
|
+
#
|
9
|
+
# Examples
|
10
|
+
# options = {
|
11
|
+
# :environment => :sandbox,
|
12
|
+
# :username => "username",
|
13
|
+
# :password => "pass",
|
14
|
+
# :developer_token => "SOME_TOKEN",
|
15
|
+
# :customer_id => "1234567",
|
16
|
+
# :account_id => "9876543" }
|
17
|
+
# service = GnibAdsApi::Reporting.new(options)
|
18
|
+
class Reporting < GnibAdsApi::Service
|
19
|
+
|
20
|
+
|
21
|
+
# Public : Get the status of a report request
|
22
|
+
#
|
23
|
+
# Author:: jlopezn@neonline.cl
|
24
|
+
#
|
25
|
+
# === Parameters
|
26
|
+
# +report_request_id+ - Identifier of the report request
|
27
|
+
#
|
28
|
+
# === Examples
|
29
|
+
# service.poll_generate_report("12345")
|
30
|
+
# # => Hash
|
31
|
+
#
|
32
|
+
# Returns:: Hash with the PollGenerateReportResponse structure
|
33
|
+
#
|
34
|
+
# Raises:: exception
|
35
|
+
def poll_generate_report(report_request_id)
|
36
|
+
response = call(:poll_generate_report,
|
37
|
+
{report_request_id: report_request_id} )
|
38
|
+
response_hash = get_response_hash(response, __method__)
|
39
|
+
report_request_status = GnibAdsApi::ReportRequestStatus.new(
|
40
|
+
response_hash[:report_request_status])
|
41
|
+
return report_request_status
|
42
|
+
end
|
43
|
+
|
44
|
+
# Public : Submits a report request
|
45
|
+
#
|
46
|
+
# Author:: jlopezn@neonline.cl
|
47
|
+
#
|
48
|
+
# === Parameters
|
49
|
+
# +report_request+ - a GnibAdsApi::ReportRequest subclass instance
|
50
|
+
#
|
51
|
+
# === Examples
|
52
|
+
# ==== CampaignPerformanceReportRequest
|
53
|
+
# report_request = GnibAdsApi::CampaignPerformanceReportRequest.new(:format => :xml,
|
54
|
+
# :language => :english,
|
55
|
+
# :report_name => "My Report",
|
56
|
+
# :aggregation => :hourly,
|
57
|
+
# :columns => [:account_name, :account_number, :time_period,
|
58
|
+
# :campaign_name, :campaign_id, :status, :currency_code,
|
59
|
+
# :impressions, :clicks, :ctr, :average_cpc, :spend,
|
60
|
+
# :conversions, :conversion_rate, :cost_per_conversion, :average_cpm ],
|
61
|
+
# :filter => {
|
62
|
+
# # String as bing expected
|
63
|
+
# :ad_distribution => "Search",
|
64
|
+
# :device_os => "Windows",
|
65
|
+
# # snake case symbol
|
66
|
+
# :device_type => :computer,
|
67
|
+
# # nil criteria
|
68
|
+
# :status => nil
|
69
|
+
# },
|
70
|
+
# :scope => {:account_ids => 5978083,
|
71
|
+
# :campaigns => [
|
72
|
+
# {:account_id => 5978083, :campaign_id => 1951230156},
|
73
|
+
# {:account_id => 5978083, :campaign_id => 1951245412},
|
74
|
+
# {:account_id => 5978083, :campaign_id => 1951245474}]
|
75
|
+
# },
|
76
|
+
# :time => {
|
77
|
+
# :custom_date_range_end => {:day => 31, :month => 12, :year => 2013},
|
78
|
+
# :custom_date_range_start => {:day => 1, :month => 12, :year => 2013},
|
79
|
+
# })
|
80
|
+
# report_request_id = reporting_service.submit_generate_report(report_request)
|
81
|
+
# # => "1234567890"
|
82
|
+
#
|
83
|
+
# Returns:: String with the requested report id
|
84
|
+
#
|
85
|
+
# Raises:: Exception if report_request is invalid or SOAP request failed
|
86
|
+
def submit_generate_report(report_request)
|
87
|
+
response = call(:submit_generate_report,
|
88
|
+
{report_request: report_request.to_hash(:camelcase)})
|
89
|
+
response_hash = get_response_hash(response, __method__)
|
90
|
+
report_request_id = response_hash[:report_request_id]
|
91
|
+
return report_request_id
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
private
|
96
|
+
def get_service_name
|
97
|
+
"reporting"
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module GnibAdsApi
|
4
|
+
|
5
|
+
##
|
6
|
+
# Public:: Module to define an object as Hasheable for the SOAP requests
|
7
|
+
#
|
8
|
+
# Author:: jlopezn@neonline.cl
|
9
|
+
module SOAPHasheable
|
10
|
+
|
11
|
+
|
12
|
+
# Internal: Metodo custom para transformar a hash un objeto.
|
13
|
+
# Se puede indicar si se desean las keys en formato CamelCase o underscore_case
|
14
|
+
#
|
15
|
+
# Author:: asaavedrab@neonline.cl
|
16
|
+
#
|
17
|
+
# === Parameters
|
18
|
+
# * keys_case - indica si las keys del hash deben estar en formato
|
19
|
+
# ** :camelcase - CamelCase
|
20
|
+
# ** :underscore - underscore_case
|
21
|
+
#
|
22
|
+
# === Example
|
23
|
+
# a=BusinessPartner.new
|
24
|
+
# a.to_hash
|
25
|
+
# # => {id => 1, name => "emol"}
|
26
|
+
#
|
27
|
+
# Returns:: Hash
|
28
|
+
def to_hash(keys_case=:underscore)
|
29
|
+
object_to_hash(self, keys_case)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
# Internal: Internal method to return an object as a SOAP Request alike hash
|
34
|
+
# If the object is an array, this methods executes object_to_hash for each item.
|
35
|
+
# If the object is a Hash, this methods normalize the keys according to +keys_case+ and executes object_to_hash for each value
|
36
|
+
# If the object is a String or Numeric, returns the object
|
37
|
+
#
|
38
|
+
# Author:: asaavedrab@neonline.cl, jlopezn@neonline.cl
|
39
|
+
#
|
40
|
+
# === Parameters
|
41
|
+
# * +object+ - object instance to be hashed
|
42
|
+
# * +keys_case+ - specifies the hash keys case, default 'underscore'
|
43
|
+
# ==== keys_case
|
44
|
+
# * :camelcase - CamelCase
|
45
|
+
# * :underscore - underscore_case
|
46
|
+
#
|
47
|
+
# === Example:
|
48
|
+
# a=Person.new
|
49
|
+
# a.to_hash(:underscore)
|
50
|
+
# # => {'id' => 1, 'full_name' => "John Doe"}
|
51
|
+
#
|
52
|
+
# a=Person.new
|
53
|
+
# a.to_hash(:camelcase)
|
54
|
+
# # => {'Id' => 1, 'FullName' => "John Doe"}
|
55
|
+
#
|
56
|
+
# a=[<Person>, <Person>, <Cat>]
|
57
|
+
# a.to_hash(:underscore)
|
58
|
+
# # => [{'id' => 1, 'full_name' => "John Doe"}, {'id' => 2, 'full_name' => "Ms Mary"}, {'id' => 3, 'name' => "Mr Whiskers", 'color' => "Gray"}]
|
59
|
+
#
|
60
|
+
# Returns:: Hash
|
61
|
+
def object_to_hash(object, keys_case=:underscore)
|
62
|
+
|
63
|
+
# Nil safe
|
64
|
+
return nil if object.nil?
|
65
|
+
|
66
|
+
# In case of hash, we only normalize the keys values
|
67
|
+
return normalize_hash_keys(object, keys_case) if object.is_a?(Hash)
|
68
|
+
# In case of array, we make hasheable each element
|
69
|
+
return object.collect{ |item| object_to_hash(item, keys_case) } if object.is_a?(Array)
|
70
|
+
# In case of number or string, this methods return the object
|
71
|
+
return object if object.is_a?(String) || object.is_a?(Numeric)
|
72
|
+
|
73
|
+
hash={}
|
74
|
+
object.instance_variables.each do |var|
|
75
|
+
if !object.instance_variable_get(var).nil?
|
76
|
+
value = object.instance_variable_get(var)
|
77
|
+
hashed_value = case value.class.to_s
|
78
|
+
when "Hash" then normalize_hash_keys(value, keys_case)
|
79
|
+
when "Array" then value.collect{ |item| object_to_hash(item, keys_case) }
|
80
|
+
else value
|
81
|
+
end
|
82
|
+
hash[get_attribute_key(var, keys_case)] = hashed_value
|
83
|
+
end
|
84
|
+
end
|
85
|
+
return hash
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
# Public:: Normalize the keys of a hash with the case specified
|
90
|
+
#
|
91
|
+
# Author:: jlopexn@neonline.cl
|
92
|
+
#
|
93
|
+
# === Parameters
|
94
|
+
# * +hash+ - Hash to be normalized
|
95
|
+
# * +keys_case+ - :underscore or :camelcase
|
96
|
+
#
|
97
|
+
# === Examples
|
98
|
+
# normalize_hash_keys({:some_key => value1}, :camelcase)
|
99
|
+
# # => {"SomeKey" => value1}
|
100
|
+
#
|
101
|
+
# normalize_hash_keys({:some_key => value1}, :underscore)
|
102
|
+
# # => {"some_key" => value1}
|
103
|
+
#
|
104
|
+
# Returns:: Hash
|
105
|
+
def normalize_hash_keys(hash, keys_case)
|
106
|
+
return hash.inject({}) { |h, (k, v)| h[get_attribute_key(k, keys_case)] = object_to_hash(v, keys_case); h }
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
# Internal : Helper method to determinate the key name in the hash for the SOAP request
|
111
|
+
#
|
112
|
+
# Author:: jlopezn@neonline.cl
|
113
|
+
#
|
114
|
+
# === Parameters
|
115
|
+
# * attribute - the attribute name
|
116
|
+
# * keys_case - defines the case for the attribute name.
|
117
|
+
# ==== keys_case
|
118
|
+
# * :camelcase - CamelCase
|
119
|
+
# * :underscore - underscore_case
|
120
|
+
#
|
121
|
+
# === Examples
|
122
|
+
# get_attribute_key("attribute_name", :underscore)
|
123
|
+
# # => "attribute_name"
|
124
|
+
#
|
125
|
+
# get_attribute_key("name", :camelcase)
|
126
|
+
# # => "AttributeName"
|
127
|
+
#
|
128
|
+
# Returns:: String with the attribute name for the key in the hash
|
129
|
+
def get_attribute_key(attribute, keys_case = :underscore)
|
130
|
+
if keys_case == :underscore
|
131
|
+
return attribute.to_s.delete("@").underscore
|
132
|
+
elsif keys_case == :camelcase
|
133
|
+
return attribute.to_s.delete("@").camelcase
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
# Internal : Returns a DateTime as a hash for SOAP requests
|
139
|
+
#
|
140
|
+
# Author:: jlopezn@neonline.cl
|
141
|
+
#
|
142
|
+
# === Parameters
|
143
|
+
# * date - DateTime to be hashed
|
144
|
+
# * keys_case - defines the case for keys in the hash
|
145
|
+
# ==== keys_case
|
146
|
+
# * :camelcase - CamelCase
|
147
|
+
# * :underscore - underscore_case
|
148
|
+
#
|
149
|
+
# Returns:: Hash with the :year, :month, :day keys
|
150
|
+
def date_to_hash(date, keys_case)
|
151
|
+
{
|
152
|
+
get_attribute_key("day", keys_case) => date.day,
|
153
|
+
get_attribute_key("month", keys_case) => date.month,
|
154
|
+
get_attribute_key("year", keys_case) => date.year
|
155
|
+
}
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
data/lib/locales/es.yml
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
# Sample localization file for English. Add more files in this directory for other locales.
|
2
|
+
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
3
|
+
|
4
|
+
es-CL:
|
5
|
+
|
6
|
+
bing:
|
7
|
+
|
8
|
+
constants:
|
9
|
+
|
10
|
+
common:
|
11
|
+
time_zones:
|
12
|
+
abu_dhabi_muscat: 'Abu Dhabi y Muscat'
|
13
|
+
adelaide: 'Adelaide, Australia'
|
14
|
+
alaska: 'Alaska'
|
15
|
+
almaty_novosibirsk: 'Almaty y Novosibirsk'
|
16
|
+
amsterdam_berlin_bern_rome_stockholm_vienna: 'Amsterdam, Berlin, Bern, Rome, Stockholm, y Vienna'
|
17
|
+
arizona: 'Arizona'
|
18
|
+
astana_dhaka: 'Astana y Dhaka'
|
19
|
+
athens_buckarest_istanbul: 'Athens, Istanbul, Beirut, y Minsk'
|
20
|
+
atlantic_time_canada: 'Atlantic Time y Canada'
|
21
|
+
auckland_wellington: 'Auckland y Wellington, New Zealand'
|
22
|
+
azores: 'Azores'
|
23
|
+
baghdad: 'Baghdad'
|
24
|
+
baku_tbilisi_yerevan: 'Baku, Tbilisi, y Yerevan'
|
25
|
+
bangkok_hanoi_jakarta: 'Bangkok, Hanoi, y Jakarta'
|
26
|
+
beijing_chongqing_hong_kong_urumqi: 'Beijing, Chongqing, Hong Kong, y Urumqi'
|
27
|
+
belgrade_bratislava_budapest_ljubljana_prague: 'Belgrade, Bratislava, Budapest, Ljubljana, y Prague'
|
28
|
+
bogota_lima_quito: 'Bogota, Lima, y Quito'
|
29
|
+
brasilia: 'Brasilia'
|
30
|
+
brisbane: 'Brisbane'
|
31
|
+
brussels_copenhagen_madrid_paris: 'Brussels, Copenhagen, Madrid, y Paris'
|
32
|
+
bucharest: 'Bucharest'
|
33
|
+
buenos_aires_georgetown: 'Buenos Aires y Georgetown'
|
34
|
+
cairo: 'Cairo'
|
35
|
+
canberra_melbourne_sydney: 'Canberra, Melbourne, y Sydney'
|
36
|
+
cape_verde_island: 'Cape Verde Island'
|
37
|
+
caracas_la_paz: 'Caracas y La Paz (Bolivia)'
|
38
|
+
casablanca_monrovia: 'Casablanca y Monrovia'
|
39
|
+
central_america: 'Central America'
|
40
|
+
central_time_u_s_canada: 'Central Time U.S. y Canada'
|
41
|
+
chennai_kolkata_mumbai_new_delhi: 'Chennai, Kolkata, Mumbai, y New Delhi'
|
42
|
+
chihuahua_la_paz_mazatlan: 'Chihuahua, La Paz (Mexico), y Mazatlan'
|
43
|
+
darwin: 'Darwin'
|
44
|
+
eastern_time_u_s_canada: 'Eastern Time U.S. y Canada'
|
45
|
+
ekaterinburg: 'Ekaterinburg'
|
46
|
+
fiji_kamchatka_marshall_island: 'Fiji, Kamchatka, y Marshall Island'
|
47
|
+
greenland: 'Greenland'
|
48
|
+
greenwich_mean_time_dublin_edinburgh_lisbon_london: 'Greenwich Mean Time, Dublin, Edinburgh, Lisbon, y London'
|
49
|
+
guadalajara_mexico_city_monterrey: 'Guadalajara, Mexico City, y Monterrey'
|
50
|
+
guam_port_moresby: 'Guam y Port Moresby'
|
51
|
+
harare_pretoria: 'Harare y Pretoria'
|
52
|
+
hawaii: 'Hawaii'
|
53
|
+
helsinki_kyiv_riga_sofia_tallinn_vilnius: 'Helsinki, Kyiv, Riga, Sofia, Tallinn, y Vilnius'
|
54
|
+
hobart: 'Hobart'
|
55
|
+
indiana_east: 'Indiana (East)'
|
56
|
+
international_date_line_west: 'International Date Line (West)'
|
57
|
+
irkutsk_ulaan_bataar: 'Irkutsk y Ulaanbaatar'
|
58
|
+
islandamabad_karachi_tashkent: 'Islamabad, Karachi, y Tashkent'
|
59
|
+
jerusalem: 'Jerusalem'
|
60
|
+
kabul: 'Kabul'
|
61
|
+
kathmandu: 'Kathmandu'
|
62
|
+
krasnoyarsk: 'Krasnoyarsk'
|
63
|
+
kuala_lumpur_singapore: 'Kuala Lumpur y Singapore'
|
64
|
+
kuwait_riyadh: 'Kuwait y Riyadh'
|
65
|
+
magadan_solomon_island_new_caledonia: 'Magadan, Solomon Islands, y New Caledonia'
|
66
|
+
mid_atlantic: 'Mid-Atlantic'
|
67
|
+
midway_islandand_samoa: 'Midway Island y Samoa'
|
68
|
+
moscow_st_petersburg_volgograd: 'Moscow, St Petersburg, y Volgograd'
|
69
|
+
mountain_time_u_s_canada: 'Mountain Time U.S. y Canada'
|
70
|
+
nairobi: 'Nairobi'
|
71
|
+
newfoundland: 'Newfoundland'
|
72
|
+
nukualofa: 'Nuku'alofa'
|
73
|
+
osaka_sapporo_tokyo: 'Osaka, Sapporo, y Tokyo'
|
74
|
+
pacific_time_u_s_canada_tijuana: 'Pacific Time, U.S. y Canada, y Tijuana'
|
75
|
+
perth: 'Perth'
|
76
|
+
rangoon: 'Rangoon'
|
77
|
+
santiago: 'Santiago'
|
78
|
+
sarajevo_skopje_warsaw_zagreb: 'Sarajevo, Skopie, Warsaw, y Zagreb'
|
79
|
+
saskatchewan: 'Saskatchewan'
|
80
|
+
seoul: 'Seoul'
|
81
|
+
sri_jayawardenepura: 'Sri Jayawardenepura'
|
82
|
+
taipei: 'Taipei'
|
83
|
+
tehran: 'Tehran'
|
84
|
+
vladivostok: 'Vladivostok'
|
85
|
+
west_central_africa: 'West Central Africa'
|
86
|
+
yakutsk: 'Yakutsk'
|
87
|
+
ad_languages:
|
88
|
+
danish: 'Danish'
|
89
|
+
dutch: 'Dutch'
|
90
|
+
english: 'English'
|
91
|
+
finnish: 'Finnish'
|
92
|
+
french: 'French'
|
93
|
+
german: 'German'
|
94
|
+
italian: 'Italian'
|
95
|
+
norwegian: 'Norwegian'
|
96
|
+
portuguese: 'Portuguese'
|
97
|
+
spanish: 'Spanish'
|
98
|
+
swedish: 'Swedish'
|
99
|
+
traditional_chinese: 'Traditional Chinese'
|
100
|
+
codes:
|
101
|
+
danish: 'DA'
|
102
|
+
dutch: 'NL'
|
103
|
+
english: 'EN'
|
104
|
+
finnish: 'FI'
|
105
|
+
french: 'FR'
|
106
|
+
german: 'DE'
|
107
|
+
italian: 'IT'
|
108
|
+
norwegian: 'NO'
|
109
|
+
portuguese: 'PT'
|
110
|
+
spanish: 'ES'
|
111
|
+
swedish: 'SV'
|
112
|
+
traditional_chinese: 'ZH'
|
113
|
+
market_country:
|
114
|
+
danish: 'Denmark'
|
115
|
+
dutch: 'Netherlands'
|
116
|
+
english: 'Australia Canada India Indonesia Ireland Malaysia New Zealand Philippines Singapore Thailand United Kingdom United States Vietnam'
|
117
|
+
finnish: 'Finland '
|
118
|
+
french: 'Belgium Canada France'
|
119
|
+
german: 'Austria Germany Switzerland'
|
120
|
+
italian: 'Italy'
|
121
|
+
norwegian: 'Norway'
|
122
|
+
portuguese: 'Brazil'
|
123
|
+
spanish: 'Argentina Chile Colombia Mexico Peru Spain Venezuela'
|
124
|
+
swedish: 'Sweden'
|
125
|
+
traditional_chinese: 'Hong Kong Taiwan'
|
126
|
+
|
127
|
+
campaign_management:
|
128
|
+
budget_limit_type:
|
129
|
+
monthly_budget_spend_until_depleted: 'MonthlyBudgetSpendUntilDepleted'
|
130
|
+
daily_budget_accelerated: 'DailyBudgetAccelerated'
|
131
|
+
daily_budget_standard: 'DailyBudgetStandard'
|
132
|
+
campaign_status:
|
133
|
+
active: 'Activa'
|
134
|
+
paused: 'Pausada'
|
135
|
+
budget_paused: 'Pausada por presupuesto'
|
136
|
+
budget_and_manual_paused: 'Pausada por presupuesto y manual'
|
137
|
+
deleted: 'Deleted'
|
138
|
+
ad_distribution:
|
139
|
+
search: 'Búsqueda'
|
140
|
+
content: 'Contenido'
|
141
|
+
ad_rotation_type:
|
142
|
+
optimize_for_clicks: 'Optimizado por clicks'
|
143
|
+
rotate_ads_evenly: 'Rotar anuncios parejo'
|
144
|
+
bidding_model:
|
145
|
+
keyword: 'Keywords'
|
146
|
+
site_placement: 'Posición en sitio'
|
147
|
+
pricing_model:
|
148
|
+
cpc: 'Cpc'
|
149
|
+
cpm: 'Cpm'
|
150
|
+
ad_group_status:
|
151
|
+
draft: 'Borrador'
|
152
|
+
active: 'Activo'
|
153
|
+
paused: 'Pausado'
|
154
|
+
deleted: 'Eliminado'
|
155
|
+
ad_status:
|
156
|
+
inactive: 'Inactivo'
|
157
|
+
Active: 'Activo'
|
158
|
+
paused: 'Pausado'
|
159
|
+
deleted: 'Eliminado'
|
160
|
+
ad_type:
|
161
|
+
text: 'Texto'
|
162
|
+
image: 'Imágen'
|
163
|
+
mobile: 'Mobil'
|
164
|
+
rich_search: 'Búsqueda enriquecida'
|
165
|
+
product: 'Producto'
|
166
|
+
keyword_editorial_status:
|
167
|
+
active: 'Activo'
|
168
|
+
disapproved: 'Desaprovado'
|
169
|
+
inactive: 'Inactivo'
|
170
|
+
keyword_status:
|
171
|
+
active: 'Activo'
|
172
|
+
paused: 'Pausado'
|
173
|
+
deleted: 'Borrado'
|
174
|
+
inactive: 'Inactivo'
|