Hi Will,
Thanks for reaching out to us.
Kindly note that you may need to differentiate an experiment campaign and a base campaign in your search query by selecting campaign.experiment_type, which will be BASE, DRAFT, or EXPERIMENT to differentiate the type of campaign. You may refer to this guide in order to retrieve the identifiers of child objects of a draft campaign for reporting on experiments.
Also, note that we are currently working on a replacement for the experiments feature, which will require you to update your code once it is ready. We estimate that the feature will be released around February of 2022. If you are considering migrating to or implementing experiments, keep in mind that there will be upcoming work in order to continue using the feature once the replacement is ready. There will be a window of approximately three months where both approaches are supported during which you can migrate. If you only use or plan to use drafts, your workflow will be unaffected.
Let us know if you have any further questions.
Regards,
Reminder: Share your feedback about the Google Ads (AdWords) API! Take the 2021 Google Ads API and AdWords API Annual Survey
|
||||||
|
||||||
update {
resource_name: "customers/REDACTED/campaigns/REDACTED"
status: PAUSED
manual_cpc {
enhanced_cpc_enabled: false
}
dynamic_search_ads_setting {
}
name: "Test Campaign1638491806"
campaign_budget: "customers/REDACTED/campaignBudgets/REDACTED"
}
update_mask {
paths: "resource_name"
paths: "name"
paths: "status"
paths: "campaign_budget"
}
error_code {
field_error: FIELD_CANNOT_BE_CLEARED
}
message: "The field cannot be cleared."
location {
field_path_elements {
field_name: "operations"
index: 0
}
field_path_elements {
field_name: "update"
}
field_path_elements {
field_name: "bidding_strategy"
manual_cpc
strategy without enabling enhanced cpc. The modification I did based on that guide was I added underneath the line:
campaign.status = client.enums.CampaignStatusEnum.PAUSED
the lines:
manual_cpc = client.get_type('ManualCpc') client.copy_from(campaign.manual_cpc,manual_cpc)
When I ran this the bidding strategy didn't change to a manual cpc and the update mask didn't register manual_cpc. When I used the following line unstead:
campaign.manual_cpc.enhanced_cpc_enabled = True
The update mask had "manual_cpc.enhanced_cpc_enabled" in it.
Let me bring this up with my team. We will get back to you a soon as possible.
update {
resource_name: "customers/REDACTED/campaigns/REDACTED"
status: PAUSED
manual_cpc {
enhanced_cpc_enabled: true
}
dynamic_search_ads_setting {
}
name: "Test Campaign1638572728"
campaign_budget: "customers/REDACTED/campaignBudgets/REDACTED"
}
update_mask {
paths: "bidding_strategy"
paths: "manual_cpc.enhanced_cpc_enabled"
}
|
Reminder: Share your feedback about the Google Ads (AdWords) API! Take the 2021 Google Ads API and AdWords API Annual Survey |
Hi Will,
Thanks for letting us know. Nadine passed this issue along to me as I'm the maintainer of the Python client library. I see you also posted a related issue to that repo, which is great, I'll respond there as well. Meanwhile will let you know that this is a known behavior of the field mask helper. When comparing two protobuf messages to generate field mask, the field mask helper can't tell the difference between a field that is not set, and a field is set to its default value (i.e. 0 is the default for most numeric fields). So in such a case, you would need to manually append this field to the field mask.
I noticed that our documentation doesn't specify this, so I'll get this updated ASAP.
Thanks!
Ben, Google Ads API Team