Hello. I am trying to follow this tutorial
<https://developers.google.com/google-ads/api/performance-max/listing-groups#python.>
but
with only two levels instead of three. I need to implement the same
behavior that when you set the items to be included in an adgroup by
selecting the custom labels.
# [START add_shopping_product_listing_group_tree]
def create_listing_group(client, customer_id, ad_group_id,
replace_existing_tree):
"""Adds a shopping listing group tree to a shopping ad group.
Args:
client: An initialized Google Ads client.
customer_id: The Google Ads customer ID.
ad_group_id: The ad group ID to which the node will be added.
replace_existing_tree: Boolean, whether to replace the existing listing
group tree on the ad group. Defaults to false.
"""
# Get the AdGroupCriterionService client.
ad_group_criterion_service = client.get_service("AdGroupCriterionService")
# Optional: Remove the existing listing group tree, if it already exists
# on the ad group. The example will throw a LISTING_GROUP_ALREADY_EXISTS
# error if a listing group tree already exists and this option is not
# set to true.
if replace_existing_tree:
remove_listing_group_tree(client, customer_id, ad_group_id)
# Create a list of ad group criteria operations.
operations = []
# Construct the listing group tree "root" node.
# Subdivision node: (Root node)
ad_group_criterion_root_operation = create_listing_group_subdivision(
client, customer_id, ad_group_id
)
# Get the resource name that will be used for the root node.
# This resource has not been created yet and will include the temporary
# ID as part of the criterion ID.
ad_group_criterion_root_resource_name = (
ad_group_criterion_root_operation.create.resource_name
)
operations.append(ad_group_criterion_root_operation)
# Construct the listing group unit nodes for NEW, USED, and other.
condition_dimension_info = client.get_type("ListingDimensionInfo")
enum = client.enums.ListingGroupFilterCustomAttributeIndexEnum
pca_1 = client.get_type("ProductCustomAttributeInfo")
pca_1.index = enum.INDEX1
pca_1.value = "test1"
pca_2 = client.get_type("ProductCustomAttributeInfo")
pca_2.index = enum.INDEX2
pca_2.value = "test2"
condition_dimension_info.product_custom_attribute.CopyFrom(pca_1)
operations.append(
create_listing_group_unit_biddable(
client,
customer_id,
ad_group_id,
ad_group_criterion_root_resource_name,
condition_dimension_info,
200_000,
)
)
condition_dimension_info.product_custom_attribute.CopyFrom(pca_2)
operations.append(
create_listing_group_unit_biddable(
client,
customer_id,
ad_group_id,
ad_group_criterion_root_resource_name,
condition_dimension_info,
200_000,
)
)
client.copy_from(
condition_dimension_info.product_custom_attribute,
client.get_type("ProductCustomAttributeInfo"),
)
operations.append(
create_listing_group_unit_biddable(
client, customer_id, ad_group_id, ad_group_criterion_root_resource_name,
condition_dimension_info, 100_000
)
)
# Add the ad group criteria.
mutate_ad_group_criteria_response = (
ad_group_criterion_service.mutate_ad_group_criteria(
customer_id=customer_id, operations=operations
)
)
# Print the results of the successful mutates.
print(
"Added ad group criteria for the listing group tree with the "
"following resource names:"
)
for result in mutate_ad_group_criteria_response.results:
print(f"\t{result.resource_name}")
print(f"{len(mutate_ad_group_criteria_response.results)} criteria added.")
# [END add_shopping_product_listing_group_tree]
But im getting this error:
Removing existing listing group tree...
Request made: ClientCustomerId: 5669844605, Host: googleads.googleapis.com,
Method: /google.ads.googleads.v17.services.GoogleAdsService/Search,
RequestId: n_bduMEd_NDTUZFejLuhtQ, IsFault: False, FaultMessage: None
Request
-------
Method:
/google.ads.googleads.v17.services.AdGroupCriterionService/MutateAdGroupCriteria
Host: googleads.googleapis.com
Headers: {
"developer-token": "REDACTED",
"login-customer-id": "6892170814",
"x-goog-api-client": "gl-python/3.10.14 grpc/1.66.1 gax/2.19.2
gccl/25.0.0 pb/5.28.1",
"x-goog-request-params": "customer_id=5669844605"
}
Request: customer_id: "5669844605"
operations {
create {
resource_name: "customers/5669844605/adGroupCriteria/167214635199~-1"
status: ENABLED
listing_group {
type_: SUBDIVISION
}
}
}
operations {
create {
status: ENABLED
listing_group {
type_: UNIT
case_value {
product_custom_attribute {
index: 3
value: "test1"
}
}
parent_ad_group_criterion:
"customers/5669844605/adGroupCriteria/167214635199~-1"
}
ad_group: "customers/5669844605/adGroups/167214635199"
cpc_bid_micros: 200000
}
}
operations {
create {
status: ENABLED
listing_group {
type_: UNIT
case_value {
product_custom_attribute {
index: 4
value: "test2"
}
}
parent_ad_group_criterion:
"customers/5669844605/adGroupCriteria/167214635199~-1"
}
ad_group: "customers/5669844605/adGroups/167214635199"
cpc_bid_micros: 200000
}
}
operations {
create {
status: ENABLED
listing_group {
type_: UNIT
case_value {
product_custom_attribute {
}
}
parent_ad_group_criterion:
"customers/5669844605/adGroupCriteria/167214635199~-1"
}
ad_group: "customers/5669844605/adGroups/167214635199"
cpc_bid_micros: 100000
}
}
Response
-------
Headers: {
"google.ads.googleads.v17.errors.googleadsfailure-bin":
"\n~\n\u0003\u0002l\u00125Subdivided listing groups must have an \"others\"
case.\u001a\u000b\u0010\u0001\"3\u0012\u000e\n\noperations\u0018\u0000\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\u0006\n\u0004type\n\u0001\n\u0002\b\u0012\u0012MEnum
value 'UNKNOWN_ENUM_VALUE_ProductCustomAttributeIndex_3' cannot be
used.\"^\u0012\u000e\n\noperations\u0018\u0001\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\f\n\ncase_value\u0012\u001a\n\u0018product_custom_attribute\u0012\u0007\n\u0005index\n\u0001\n\u0002\b\u0012\u0012MEnum
value 'UNKNOWN_ENUM_VALUE_ProductCustomAttributeIndex_4' cannot be
used.\"^\u0012\u000e\n\noperations\u0018\u0002\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\f\n\ncase_value\u0012\u001a\n\u0018product_custom_attribute\u0012\u0007\n\u0005index\n\u0001\n\u0003\u0003\u0002\u0012#The
required field was not
present.\"^\u0012\u000e\n\noperations\u0018\u0003\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\f\n\ncase_value\u0012\u001a\n\u0018product_custom_attribute\u0012\u0007\n\u0005index\u0012\u0016Byq_X3ku-ucrT5tu2e0xOg",
"grpc-status-details-bin": "\b\u0003\u0012%Request contains an invalid
argument.\u001a\u0005\nDtype.googleapis.com/google.ads.googleads.v17.errors.GoogleAdsFailure\u0012\u0005\n~\n\u0003\u0002l\u00125Subdivided
listing groups must have an \"others\"
case.\u001a\u000b\u0010\u0001\"3\u0012\u000e\n\noperations\u0018\u0000\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\u0006\n\u0004type\n\u0001\n\u0002\b\u0012\u0012MEnum
value 'UNKNOWN_ENUM_VALUE_ProductCustomAttributeIndex_3' cannot be
used.\"^\u0012\u000e\n\noperations\u0018\u0001\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\f\n\ncase_value\u0012\u001a\n\u0018product_custom_attribute\u0012\u0007\n\u0005index\n\u0001\n\u0002\b\u0012\u0012MEnum
value 'UNKNOWN_ENUM_VALUE_ProductCustomAttributeIndex_4' cannot be
used.\"^\u0012\u000e\n\noperations\u0018\u0002\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\f\n\ncase_value\u0012\u001a\n\u0018product_custom_attribute\u0012\u0007\n\u0005index\n\u0001\n\u0003\u0003\u0002\u0012#The
required field was not
present.\"^\u0012\u000e\n\noperations\u0018\u0003\u0012\b\n\u0006create\u0012\u000f\n\rlisting_group\u0012\f\n\ncase_value\u0012\u001a\n\u0018product_custom_attribute\u0012\u0007\n\u0005index\u0012\u0016Byq_X3ku-ucrT5tu2e0xOg",
"request-id": "Byq_X3ku-ucrT5tu2e0xOg"
}
Fault: errors {
error_code {
criterion_error: LISTING_GROUP_SUBDIVISION_REQUIRES_OTHERS_CASE
}
message: "Subdivided listing groups must have an \"others\" case."
trigger {
int64_value: -1
}
location {
field_path_elements {
field_name: "operations"
index: 0
}
field_path_elements {
field_name: "create"
}
field_path_elements {
field_name: "listing_group"
}
field_path_elements {
field_name: "type"
}
}
}
errors {
error_code {
request_error: INVALID_ENUM_VALUE
}
message: "Enum value \'UNKNOWN_ENUM_VALUE_ProductCustomAttributeIndex_3\'
cannot be used."
location {
field_path_elements {
field_name: "operations"
index: 1
}
field_path_elements {
field_name: "create"
}
field_path_elements {
field_name: "listing_group"
}
field_path_elements {
field_name: "case_value"
}
field_path_elements {
field_name: "product_custom_attribute"
}
field_path_elements {
field_name: "index"
}
}
}
errors {
error_code {
request_error: INVALID_ENUM_VALUE
}
message: "Enum value \'UNKNOWN_ENUM_VALUE_ProductCustomAttributeIndex_4\'
cannot be used."
location {
field_path_elements {
field_name: "operations"
index: 2
}
field_path_elements {
field_name: "create"
}
field_path_elements {
field_name: "listing_group"
}
field_path_elements {
field_name: "case_value"
}
field_path_elements {
field_name: "product_custom_attribute"
}
field_path_elements {
field_name: "index"
}
}
}
errors {
error_code {
field_error: REQUIRED
}
message: "The required field was not present."
location {
field_path_elements {
field_name: "operations"
index: 3
}
field_path_elements {
field_name: "create"
}
field_path_elements {
field_name: "listing_group"
}
field_path_elements {
field_name: "case_value"
}
field_path_elements {
field_name: "product_custom_attribute"
}
field_path_elements {
field_name: "index"
}
}
}
request_id: "Byq_X3ku-ucrT5tu2e0xOg"
Request made: ClientCustomerId: 5669844605, Host: googleads.googleapis.com,
Method:
/google.ads.googleads.v17.services.AdGroupCriterionService/MutateAdGroupCriteria,
RequestId: Byq_X3ku-ucrT5tu2e0xOg, IsFault: True, FaultMessage: Subdivided
listing groups must have an "others" case.
That there are fields, that im not sending, that it is missing the others.
--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
---
You received this message because you are subscribed to the Google Groups
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/adwords-api/e9d58eeb-4ccd-419a-bb41-fec9603f3fc5n%40googlegroups.com.