Hello,
I was using the below code to try to modify campaign.targeting_setting but
failed,
and I could not find examples of using google-ads python library to achieve
this.
Could you suggest valid ways to achieve this? Thanks in advance.
*error messages:*
[2024-01-24 15:32:03,881 - INFO] Request
-------
Method: /google.ads.googleads.v14.services.CampaignService/MutateCampaigns
Host: googleads.googleapis.com
Headers: {
"developer-token": "REDACTED",
"login-customer-id": "7852354852",
"x-goog-api-client": "gl-python/3.8.13 grpc/1.60.0 gax/2.15.0 gccl/23.0.0
pb/4.25.2",
"x-goog-request-params": "customer_id=5692452448"
}
Request: customer_id: "5692452448"
operations {
create {
name: "Campaign-test-c920b589a770452b81097b38c8341799"
status: PAUSED
advertising_channel_type: DISPLAY
targeting_setting {
target_restrictions {
targeting_dimension: TOPIC
bid_only: true
}
}
campaign_budget: "customers/5692452448/campaignBudgets/13318508559"
manual_cpc {
enhanced_cpc_enabled: true
}
}
}
Response
-------
Headers: {
"google.ads.googleads.v14.errors.googleadsfailure-bin":
"\n\u0002\n\u0003\u0003\u0005\u0012\u0001The supplied TargetingSetting
contains an invalid CriterionTypeGroup. See CriterionTypeGroup
documentation for CriterionTypeGroups allowed in Campaign or AdGroup
TargetingSettings.\u001a\n*\bVERTICAL\"_\u0012\u000e\n\noperations\u0018\u0000\u0012\b\n\u0006create\u0012\u0013\n\u0011targeting_setting\u0012\u0017\n\u0013target_restrictions\u0018\u0000\u0012\u0015\n\u0013targeting_dimension\u0012\u0016GFK9JfBHlKKgx814MqWfOQ",
"grpc-status-details-bin": "\b\u0003\u0012%Request contains an invalid
argument.\u001a\u0003\nDtype.googleapis.com/google.ads.googleads.v14.errors.GoogleAdsFailure\u0012\u0002\n\u0002\n\u0003\u0003\u0005\u0012\u0001The
supplied TargetingSetting contains an invalid CriterionTypeGroup. See
CriterionTypeGroup documentation for CriterionTypeGroups allowed in
Campaign or AdGroup
TargetingSettings.\u001a\n*\bVERTICAL\"_\u0012\u000e\n\noperations\u0018\u0000\u0012\b\n\u0006create\u0012\u0013\n\u0011targeting_setting\u0012\u0017\n\u0013target_restrictions\u0018\u0000\u0012\u0015\n\u0013targeting_dimension\u0012\u0016GFK9JfBHlKKgx814MqWfOQ",
"request-id": "GFK9JfBHlKKgx814MqWfOQ"
}
Fault: errors {
error_code {
setting_error: TARGETING_SETTING_CONTAINS_INVALID_CRITERION_TYPE_GROUP
}
message: "The supplied TargetingSetting contains an invalid
CriterionTypeGroup. See CriterionTypeGroup documentation for
CriterionTypeGroups allowed in Campaign or AdGroup TargetingSettings."
trigger {
string_value: "VERTICAL"
}
location {
field_path_elements {
field_name: "operations"
index: 0
}
field_path_elements {
field_name: "create"
}
field_path_elements {
field_name: "targeting_setting"
}
field_path_elements {
field_name: "target_restrictions"
index: 0
}
field_path_elements {
field_name: "targeting_dimension"
}
}
}
request_id: "GFK9JfBHlKKgx814MqWfOQ"
=====
my code:
def create_campaign(client, customer_id: str, campaign_budget: str,
targeting_setting: str) -> dict:
"""given customer id, campagin_budget (resource_name), create a campaign
and return campaign info as dict"""
campaign_service = client.get_service("CampaignService")
campaign_operation = client.get_type("CampaignOperation")
campaign = campaign_operation.create
# create a campaign with Google GDN
campaign.name = f"Campaign-test-{uuid4().hex}"
campaign.advertising_channel_type = client.enums.AdvertisingChannelTypeEnum.
DISPLAY
campaign.status = client.enums.CampaignStatusEnum.PAUSED
campaign.manual_cpc.enhanced_cpc_enabled = True
campaign.campaign_budget = campaign_budget
# set targeting setting
targeting_setting = client.get_type("TargetingSetting")
restriction = client.get_type("TargetRestriction")
restriction.bid_only = True
restriction.targeting_dimension = client.enums.TargetingDimensionEnum.TOPIC
restriction.targeting_dimension.path = "Pets & Animals"
restriction.targeting_dimension.topic_constant = "/Pets & Animals/Animal
Products & Services/Pet Food & Pet Care Supplies" # ref:
https://developers.google.com/google-ads/api/data/verticals
targeting_setting.target_restrictions.append(restriction)
campaign.targeting_setting = targeting_setting
campaign_response = campaign_service.mutate_campaigns(customer_id=customer_id,
operations=[campaign_operation])
return {
"customer_id": customer_id,
"campaign_id": campaign_response.results[0].resource_name.split("/")[-1],
"campaign_name": campaign.name,
"campaign_status": campaign.status,
"campaign_budget": campaign_budget,
"campagin_targeting_setting": targeting_setting,
}
--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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/52aba1c2-d947-4a20-a23a-da25cffcce8bn%40googlegroups.com.