campaign_service = google_ads_client.get_service('CampaignService', version='v1')campaign_operation = google_ads_client.get_type('CampaignOperation', version='v1')campaign = campaign_operation.updatecampaign.resource_name = campaign_service.campaign_path(cid, '911450346')campaign.target_roas.target_roas = 4.1fm = protobuf_helpers.field_mask(None, campaign.target_roas)campaign_operation.update_mask.CopyFrom(fm)campaign_response = campaign_service.mutate_campaigns(cid, [campaign_operation])print('Updated campaign %s.' % campaign_response.results[0].resource_name) campaign.target_roas.target_roas = 4.1
AttributeError: Assignment not allowed to field "target_roas" in protocol message object.campaign.target_roas.target_roas.value = 3.7 google.ads.google_ads.errors.GoogleAdsException: (<_Rendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Request contains an invalid argument."
debug_error_string = "{"created":"@1554359684.563000000","description":"Error received from peer","file":"src/core/lib/surface/call.cc","file_line":1036,"grpc_message":"Request contains an invalid argument.","grpc_status":3}"
>, <_Rendezvous of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "Request contains an invalid argument."
debug_error_string = "{"created":"@1554359684.563000000","description":"Error received from peer","file":"src/core/lib/surface/call.cc","file_line":1036,"grpc_message":"Request contains an invalid argument.","grpc_status":3}"
>, errors {
error_code {
field_mask_error: FIELD_NOT_FOUND
}
message: "The field mask contained an invalid field: \'value\'."
location {
field_path_elements {
field_name: "operations"
index {
}
}
}
}
, 'xPv4PaUFvAI-7k95cZzYDg')