/
add_call_ad.py
executable file
·166 lines (149 loc) · 5.76 KB
/
add_call_ad.py
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/usr/bin/env python
# Copyright 2022 Google LLC
#
# 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
#
# https://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 example adds a call ad to a given ad group.
More information about call ads can be found at:
https://support.google.com/google-ads/answer/6341403.
To get ad group IDs, run basic_operations/get_ad_groups.py.
"""
import argparse
import sys
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
# Country code is a two-letter ISO-3166 code, for a list of all codes see:
# https://developers.google.com/google-ads/api/reference/data/codes-formats#expandable-17
_DEFAULT_PHONE_COUNTRY = "US"
def main(
client,
customer_id,
ad_group_id,
phone_number,
phone_country,
conversion_action_id,
):
"""The main method that creates all necessary entities for the example.
Args:
client: an initialized GoogleAdsClient instance.
customer_id: a client customer ID.
ad_group_id: an ad group ID.
phone_number: a phone number for your business, e.g. '(123) 456-7890'.
phone_country: a two-letter ISO-3166 code.
conversion_action_id: an ID for a conversion action.
"""
googleads_service = client.get_service("GoogleAdsService")
operation = client.get_type("AdGroupAdOperation")
ad_group_ad = operation.create
ad_group_ad.ad_group = googleads_service.ad_group_path(
customer_id, ad_group_id
)
ad_group_ad.status = client.enums.AdGroupAdStatusEnum.PAUSED
ad = ad_group_ad.ad
# The URL of the webpage to refer to.
ad.final_urls.append("https://www.example.com")
# Sets basic information.
ad.call_ad.business_name = "Google"
ad.call_ad.headline1 = "Travel"
ad.call_ad.headline2 = "Discover"
ad.call_ad.description1 = "Travel the World"
ad.call_ad.description2 = "Travel the Universe"
# Sets the country code and phone number of the business to call.
ad.call_ad.country_code = phone_country
ad.call_ad.phone_number = phone_number
# Sets the verification URL to a webpage that includes the phone number.
ad.call_ad.phone_number_verification_url = "https://www.example.com/contact"
# The fields below are optional.
# Configures call tracking and reporting.
ad.call_ad.call_tracked = True
ad.call_ad.disable_call_conversion = False
# Sets path parts to append for display.
ad.call_ad.path1 = "services"
ad.call_ad.path2 = "travels"
# Sets the conversion action ID if provided.
if conversion_action_id:
ad.call_ad.conversion_action = googleads_service.conversion_action_path(
customer_id, conversion_action_id
)
ad.call_ad.conversion_reporting_state = (
client.enums.CallConversionReportingStateEnum.USE_RESOURCE_LEVEL_CALL_CONVERSION_ACTION
)
# Issues a mutate request to add the ad group ad.
ad_group_ad_service = client.get_service("AdGroupAdService")
response = ad_group_ad_service.mutate_ad_group_ads(
customer_id=customer_id, operations=[operation]
)
resource_name = response.results[0].resource_name
print(f"Created ad group ad with resource name: '{resource_name}'")
if __name__ == "__main__":
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
googleads_client = GoogleAdsClient.load_from_storage(version="v13")
parser = argparse.ArgumentParser(
description=("Adds a call extension to a specific account.")
)
# The following argument(s) should be provided to run the example.
parser.add_argument(
"-c",
"--customer_id",
type=str,
required=True,
help="The Google Ads customer ID.",
)
parser.add_argument(
"-a", "--ad_group_id", type=str, required=True, help="An ad group ID.",
)
parser.add_argument(
"-n",
"--phone_number",
type=str,
required=True,
help=("A phone number for your business, e.g. '(123) 456-7890'"),
)
parser.add_argument(
"-p",
"--phone_country",
type=str,
default=_DEFAULT_PHONE_COUNTRY,
help=(
"A two-letter ISO-3166 code representing a country code, for a "
"list of all codes see: "
"https://developers.google.com/google-ads/api/reference/data/codes-formats#expandable-17"
),
)
parser.add_argument(
"-v",
"--conversion_action_id",
type=str,
help=("An optional conversion action ID to attribute conversions to."),
)
args = parser.parse_args()
try:
main(
googleads_client,
args.customer_id,
args.ad_group_id,
args.phone_number,
args.phone_country,
args.conversion_action_id,
)
except GoogleAdsException as ex:
print(
f'Request with ID "{ex.request_id}" failed with status '
f'"{ex.error.code().name}" and includes the following errors:'
)
for error in ex.failure.errors:
print(f'Error with message "{error.message}".')
if error.location:
for field_path_element in error.location.field_path_elements:
print(f"\t\tOn field: {field_path_element.field_name}")
sys.exit(1)