Hey Team, I am creating a listing group where I only want to Include 
certain ItemID from all products and Exclude  "EVERYTHING ELSE". I used the 
API Documentation but could not figure out how to exclude them. 

URGENT Help Needed
Attaching the code for the reference:-

def next_id():
global last_criterion_id
last_criterion_id -= 1
return str(last_criterion_id)


def main(client, customer_id, ad_group_id, replace_existing_tree):
ad_group_criterion_service = client.get_service("AdGroupCriterionService")
if replace_existing_tree:
remove_listing_group_tree(client, customer_id, ad_group_id)
operations = []
condition_dimension_info = client.get_type("ListingDimensionInfo")
client.copy_from(
condition_dimension_info.product_condition,
client.get_type("ProductConditionInfo"),
)
ad_group_criterion_other_operation = create_listing_group_subdivision(
client,
customer_id,
ad_group_id,
condition_dimension_info,
)
ad_group_criterion_other_resource_name = (
ad_group_criterion_other_operation.create.resource_name
)
operations.append(ad_group_criterion_other_operation)

item_dimension_info = client.get_type("ListingDimensionInfo")

item_ids = ["n12288755v", "n12648292v", "n12673786v"]

for item_id in item_ids:
item_dimension_info = client.get_type("ListingDimensionInfo")
item_dimension_info.product_item_id.value = item_id
operations.append(
create_listing_group_unit_biddable(
client,
customer_id,
ad_group_id,
ad_group_criterion_other_resource_name,
item_dimension_info,
900_000,
)
)

##Other item ids
client.copy_from(
item_dimension_info.product_item_id, client.get_type("ProductItemIdInfo"),
)
operations.append(
create_listing_group_unit_biddable(
client,
customer_id,
ad_group_id,
ad_group_criterion_other_resource_name,
item_dimension_info,
50_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]


def remove_listing_group_tree(client, customer_id, ad_group_id):
googleads_service = client.get_service("GoogleAdsService")
print("Removing existing listing group tree...")
query = f"""
SELECT ad_group_criterion.resource_name
FROM ad_group_criterion
WHERE
ad_group_criterion.type = LISTING_GROUP
AND ad_group_criterion.listing_group.parent_ad_group_criterion IS NULL
AND ad_group.id = {ad_group_id}"""

results = googleads_service.search(customer_id=customer_id, query=query)
ad_group_criterion_operations = []
for row in results:
criterion = row.ad_group_criterion
print(
"Found an ad group criterion with resource name: "
f"'{criterion.resource_name}'."
)
ad_group_criterion_operation = client.get_type(
"AdGroupCriterionOperation"
)
ad_group_criterion_operation.remove = criterion.resource_name
ad_group_criterion_operations.append(ad_group_criterion_operation)

if ad_group_criterion_operations:
ad_group_criterion_service = client.get_service(
"AdGroupCriterionService"
)
response = ad_group_criterion_service.mutate_ad_group_criteria(
customer_id=customer_id, operations=ad_group_criterion_operations
)
print(f"Removed {len(response.results)} ad group criteria.")


def create_listing_group_subdivision(
client,
customer_id,
ad_group_id,
parent_ad_group_criterion_resource_name=None,
listing_dimension_info=None,
):
operation = client.get_type("AdGroupCriterionOperation")
ad_group_criterion = operation.create
ad_group_criterion.resource_name = client.get_service(
"AdGroupCriterionService"
).ad_group_criterion_path(customer_id, ad_group_id, next_id())
ad_group_criterion.status = client.enums.AdGroupCriterionStatusEnum.ENABLED

listing_group_info = ad_group_criterion.listing_group
listing_group_info.type_ = client.enums.ListingGroupTypeEnum.SUBDIVISION
if (
parent_ad_group_criterion_resource_name
and listing_dimension_info != None
):
listing_group_info.parent_ad_group_criterion = (
parent_ad_group_criterion_resource_name
)
client.copy_from(listing_group_info.case_value, listing_dimension_info)

return operation


def create_listing_group_unit_biddable(
client,
customer_id,
ad_group_id,
parent_ad_group_criterion_resource_name,
listing_dimension_info,
cpc_bid_micros=None,
):
operation = client.get_type("AdGroupCriterionOperation")

criterion = operation.create
criterion.ad_group = client.get_service("AdGroupService").ad_group_path(
customer_id, ad_group_id
)
criterion.status = client.enums.AdGroupCriterionStatusEnum.ENABLED
if cpc_bid_micros:
criterion.cpc_bid_micros = cpc_bid_micros

listing_group = criterion.listing_group
listing_group.type_ = client.enums.ListingGroupTypeEnum.UNIT
listing_group.parent_ad_group_criterion = (
parent_ad_group_criterion_resource_name
)
if listing_dimension_info != None:
client.copy_from(listing_group.case_value, listing_dimension_info)

return operation

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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 adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
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 adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/8ff032d0-70a3-49d5-8ad0-68c48ffbca5dn%40googlegroups.com.

Reply via email to