My favorites | Sign in
Google
             
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/usr/bin/python
#
# Copyright 2009, Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""This code sample creates a new image ad given an existing ad group. To
create an ad group, you can run add_ad_group.py."""

import base64
import urllib
import SOAPpy


# Provide AdWords login information.
email = 'INSERT_LOGIN_EMAIL_HERE'
password = 'INSERT_PASSWORD_HERE'
client_email = 'INSERT_CLIENT_LOGIN_EMAIL_HERE'
useragent = 'INSERT_COMPANY_NAME: AdWords API Python Sample Code'
developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
application_token = 'INSERT_APPLICATION_TOKEN_HERE'

# Define SOAP headers.
headers = SOAPpy.Types.headerType()
headers.email = email
headers.password = password
headers.clientEmail = client_email
headers.useragent = useragent
headers.developerToken = developer_token
headers.applicationToken = application_token

# Set up service connection. To view XML request/response, change value of
# ad_service.config.debug to 1. To send requests to production
# environment, replace "sandbox.google.com" with "adwords.google.com".
namespace = 'https://sandbox.google.com/api/adwords/v13'
ad_service = SOAPpy.SOAPProxy(namespace + '/AdService',
header=headers)
ad_service.config.debug = 0

# Create new image ad structure.
ad_group_id = 'INSERT_AD_GROUP_ID_HERE'
image = open('INSERT_IMAGE_PATH_HERE', 'r').read()
image_ad = {
'adGroupId': SOAPpy.Types.untypedType(ad_group_id),
'adType': SOAPpy.Types.untypedType('ImageAd'),
'displayUrl': 'www.example.com',
'destinationUrl': 'http://www.example.com',
'image': {'data': SOAPpy.Types.untypedType(base64.encodestring(image)),
'name': SOAPpy.Types.untypedType('image_ad')}
}

# Check new ad for policy violations before adding it.
language_target = {'languages': ['en']}
geo_target = {'countryTargets': {'countries': ['US']}}
errors = ad_service.checkAds([image_ad], language_target, geo_target)

# Convert to a list if we get back a single object.
if len(errors) > 0 and not isinstance(errors, list):
errors = [errors]

# Add image ad if there are no policy violations.
if len(errors) == 0:
ads = ad_service.addAds([image_ad])

# Convert to a list if we get back a single object.
if len(ads) > 0 and not isinstance(ads, list):
ads = [ads]

# Display new image ad.
for ad in ads:
print 'New image ad with displayUrl "%s" and id "%s" was ' \
'created.' % (ad['displayUrl'], ad['id'])
else:
print 'New image ad was not created due to the following policy ' \
'violations:'
for error in errors:
print ' Detail: %s\nisExemptable: %s' % \
(error['detail'], error['isExemptable'])
print
Show details Hide details

Change log

r5 by api.sgrinberg on Mar 05, 2009   Diff
Release 2.0.0:
- Removed support for v12. Set v13 as
default version.
Go to: 
Project members, sign in to write a code review

Older revisions

r4 by api.sgrinberg on Nov 05, 2008   Diff
Release 1.0.1:
- Fixed SOAP types issues.
r3 by api.sgrinberg on Aug 12, 2008   Diff
1.0.0:
- Removed support for v11 and set v12
as default API version.
r2 by api.sgrinberg on Mar 11, 2008   Diff
Initial release of the AdWords API
Python Sample Code.
All revisions of this file

File info

Size: 3183 bytes, 89 lines

File properties

svn:executable
*