Wenn Sie mehrere Ressourcentypen in einer einzigen Anfrage ändern oder alle Änderungen an einen einheitlichen Endpunkt senden möchten, verwenden Sie GoogleAdsService.Mutate. Eine vollständige Liste der unterstützten Vorgänge finden Sie in der MutateOperation-Referenz.
Änderungsvorgänge
Jedes MutateGoogleAdsRequest akzeptiert ein wiederholtes MutateOperation im Feld mutate_operations:
- Ressourcenänderungsvorgänge: Jeder Eintrag kann einen einzelnen
create-,update- oderremove-Vorgang für einen Ressourcentyp angeben. - Aktionsvorgänge: In jedem Eintrag kann auch ein Aktionsvorgang angegeben werden, z. B.
book_campaigns_operationoderquote_campaigns_operation.
Wenn Sie abhängige Entitäten (z. B. eine Kampagne und eine Anzeigengruppe) in einem einzigen GoogleAdsService.Mutate-Aufruf erstellen möchten, erstellen Sie zwei MutateOperation-Einträge. Einer enthält eine CampaignOperation und der andere eine AdGroupOperation. Weisen Sie der Kampagne einen temporären Ressourcennamen mit einer negativen ID (z. B. customers/CUSTOMER_ID/campaigns/-1) zu, damit der Anzeigengruppenvorgang im selben Request darauf verweisen kann:
Python
import uuid campaign_budget_service = client.get_service("CampaignBudgetService") campaign_service = client.get_service("CampaignService") googleads_service = client.get_service("GoogleAdsService") campaign_budget_resource_name = campaign_budget_service.campaign_budget_path( customer_id, budget_id ) temp_campaign_resource_name = campaign_service.campaign_path(customer_id, "-1") mutate_operation1 = client.get_type("MutateOperation") campaign = mutate_operation1.campaign_operation.create campaign.resource_name = temp_campaign_resource_name campaign.name = f"Bulk Mutate Campaign #{uuid.uuid4()}" campaign.advertising_channel_type = ( client.enums.AdvertisingChannelTypeEnum.SEARCH ) campaign.status = client.enums.CampaignStatusEnum.PAUSED campaign.manual_cpc = client.get_type("ManualCpc") campaign.campaign_budget = campaign_budget_resource_name campaign.contains_eu_political_advertising = ( client.enums.EuPoliticalAdvertisingStatusEnum.DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING ) mutate_operation2 = client.get_type("MutateOperation") ad_group = mutate_operation2.ad_group_operation.create ad_group.name = "Bulk Mutate Ad Group" ad_group.campaign = temp_campaign_resource_name ad_group.status = client.enums.AdGroupStatusEnum.ENABLED response = googleads_service.mutate( customer_id=customer_id, mutate_operations=[mutate_operation1, mutate_operation2], ) for op_response in response.mutate_operation_responses: result_type = op_response._pb.WhichOneof("response") result = getattr(op_response, result_type) print(f"Created {result_type}: {result.resource_name}")
Ruby
campaign_budget_resource_name = client.path.campaign_budget(customer_id, budget_id) temp_campaign_resource_name = client.path.campaign(customer_id, -1) mutate_operation1 = client.operation.mutate do |m| m.campaign_operation = client.operation.create_resource.campaign do |c| c.resource_name = temp_campaign_resource_name c.name = "Bulk Mutate Campaign #{(Time.new.to_f * 1000).to_i}" c.advertising_channel_type = :SEARCH c.status = :PAUSED c.manual_cpc = client.resource.manual_cpc c.campaign_budget = campaign_budget_resource_name c.contains_eu_political_advertising = :DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING end end mutate_operation2 = client.operation.mutate do |m| m.ad_group_operation = client.operation.create_resource.ad_group do |ag| ag.name = "Bulk Mutate Ad Group" ag.campaign = temp_campaign_resource_name ag.status = :ENABLED end end response = client.service.google_ads.mutate( customer_id: customer_id, mutate_operations: [mutate_operation1, mutate_operation2] ) response.mutate_operation_responses.each do |op_response| result = op_response.send(op_response.response) puts "Created #{op_response.response}: #{result.resource_name}" end
Atomarität und teilweise fehlgeschlagene Vorgänge
Standardmäßig werden Vorgänge in einer GoogleAdsService.Mutate-Anfrage atomar ausgeführt: Entweder sind alle Vorgänge erfolgreich oder die gesamte Anfrage schlägt fehl, wenn ein Vorgang einen Fehler enthält.
Wie einzelne Ressourcendienste unterstützt dieser Endpunkt die folgenden Optionen:
- Teilweiser Fehler (
partial_failure = true): Gültige Vorgänge werden festgeschrieben und Fehler für fehlgeschlagene Vorgänge inpartial_failure_errorwerden zurückgegeben. - Validierungsmodus (
validate_only = true): Prüft Vorgänge auf Fehler, ohne Änderungen am Konto vorzunehmen:- Ressourcenänderungsvorgänge: Es werden nur Validierungsfehler zurückgegeben und Ergebnisse werden weggelassen.
- Aktionsvorgänge: Gibt das Aktionsergebnis (z. B.
quote_campaigns_resultoderbook_campaigns_result) zurück, wenn die Validierung erfolgreich ist. Wenn Validierungsfehler auftreten, wird das Aktionsergebnis inMutateOperationResponseweggelassen (ein Angebot kann jedoch weiterhin inErrorDetails.reservation_error_detailszurückgegeben werden). Beachten Sie, dassquote_campaigns_operationvalidate_only = trueundpartial_failure = falseerfordert.