Tek bir istekte birden fazla kaynak türünü değiştirmek veya tüm değişiklikleri birleştirilmiş bir uç noktaya göndermek için GoogleAdsService.Mutate kullanın. Desteklenen işlemlerin tam listesi için MutateOperation referansına bakın.
Değişiklik işlemleri
Her MutateGoogleAdsRequest, mutate_operations alanında yinelenen bir MutateOperation kabul eder:
- Kaynak değiştirme işlemleri (desteklenen tüm sürümler): Her giriş, bir kaynak türü için tek bir
create,updateveyaremoveişlemi belirtebilir. - İşlem işlemleri (v23 ve sonraki sürümler): Her giriş,
book_campaigns_operationveyaquote_campaigns_operationgibi bir işlem işlemi de belirtebilir (v22'deMutateOperationyalnızca kaynak değiştirme işlemlerini destekler).
Tek bir GoogleAdsService.Mutate çağrısında bağımlı öğeler (ör. kampanya ve reklam grubu) oluşturmak için iki MutateOperation giriş oluşturun (biri CampaignOperation, diğeri AdGroupOperation içerecek şekilde). Reklam grubu işlemi aynı istekte kampanyaya başvurabilsin diye kampanyaya negatif kimlikli (ör. customers/CUSTOMER_ID/campaigns/-1) bir geçici kaynak adı atayın:
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
Atomiklik ve kısmi hata
Varsayılan olarak, GoogleAdsService.Mutate isteğindeki işlemler atomik olarak yürütülür: Tüm işlemler birlikte başarılı olur veya herhangi bir işlem hata içeriyorsa isteğin tamamı başarısız olur.
Bu uç nokta, tek tek kaynak hizmetleri gibi aşağıdaki seçenekleri destekler:
- Kısmi başarısızlık
(
partial_failure = true): Geçerli işlemleri işler vepartial_failure_erroriçindeki başarısız işlemler için hatalar döndürür. - Doğrulama modu (
validate_only = true): Hesapta değişiklik yapmadan işlemlerde hata olup olmadığını kontrol eder:- Kaynak değiştirme işlemleri: Yalnızca doğrulama hatalarını döndürür ve sonuçları atlar.
- İşlem işlemleri (v23 ve sonraki sürümler): Doğrulama başarılı olduğunda işlem sonucunu (ör.
quote_campaigns_resultveyabook_campaigns_result) döndürür. Doğrulama hataları oluşursa işlem sonucuMutateOperationResponse'den çıkarılır (ancakErrorDetails.reservation_error_detailsiçinde yine de bir alıntı döndürülebilir).quote_campaigns_operationiçinvalidate_only = truevepartial_failure = falsegerektiğini unutmayın.