Describe the problem you are trying to solve:
Trying to add example for keywords_historical_metrics.
Describe the solution you'd like:
#!/usr/bin/env python
# Copyright 2018 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 generates historical metrics for keyword planning.
# Guide: https://developers.google.com/google-ads/api/docs/keyword-planning/generate-historical-metrics
import argparse
import sys
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
def main(
client,
customer_id,
keywords,
location_ids,
keyword_plan_network,
language_id,
):
ga_service = client.get_service("KeywordPlanIdeaService")
location_rns = map_locations_ids_to_resource_names(client, location_ids)
language_rn = client.get_service("GoogleAdsService").language_constant_path(
language_id
)
request = {
"customer_id": customer_id,
"keywords": keywords,
"geo_target_constants": location_rns,
"keyword_plan_network": keyword_plan_network,
"language": language_rn,
}
keywords_historical_metrics = ga_service.generate_keyword_historical_metrics(
request=request
)
print(keywords_historical_metrics)
def map_locations_ids_to_resource_names(client, location_ids):
"""Converts a list of location IDs to resource names.
Args:
client: an initialized GoogleAdsClient instance.
location_ids: a list of location ID strings.
Returns:
a list of resource name strings using the given location IDs.
"""
build_resource_name = client.get_service(
"GeoTargetConstantService"
).geo_target_constant_path
return [build_resource_name(location_id) for location_id in location_ids]
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="v14")
parser = argparse.ArgumentParser(
description=(
"Displays basic information about the specified "
"customer's advertising 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.",
)
args = parser.parse_args()
keywords = ["mars cruise", "cheap cruise", "jupiter cruise"]
# Location IDs are listed here:
# https://developers.google.com/google-ads/api/reference/data/geotargets
# and they can also be retrieved using the GeoTargetConstantService as shown
# here: https://developers.google.com/google-ads/api/docs/targeting/location-targeting
# Geo target constant 2840 is for USA.
location_ids = ["2840"]
keyword_plan_network = (
googleads_client.enums.KeywordPlanNetworkEnum.GOOGLE_SEARCH_AND_PARTNERS
)
# Language criteria 1000 is for English. See
# https://developers.google.com/google-ads/api/reference/data/codes-formats#languages
# for the list of language criteria IDs.
language_id = "1000"
try:
main(
googleads_client,
args.customer_id,
keywords,
location_ids,
keyword_plan_network,
language_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'\tError 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)
Describe alternatives you've considered:
Additional context:
I checked the contributing readme file which says to open a PR which I am unable to do. What is the best way to contribute this in the repo.
I tried following the example in Perl https://developers.google.com/google-ads/api/samples/generate-historical-metrics#perl
Describe the problem you are trying to solve: Trying to add example for
keywords_historical_metrics
.Describe the solution you'd like:
Describe alternatives you've considered:
Additional context: I checked the contributing readme file which says to open a PR which I am unable to do. What is the best way to contribute this in the repo.
I tried following the example in Perl
https://developers.google.com/google-ads/api/samples/generate-historical-metrics#perl
Thanks.