برای تغییر دادن چندین نوع منبع در یک درخواست یا ارسال همه تغییرات به یک نقطه پایانی یکپارچه، از GoogleAdsService.Mutate استفاده کنید. برای مشاهده فهرست کامل
عملیات پشتیبانیشده، به مرجع MutateOperation مراجعه کنید.
عملیات تغییریافته
هر MutateGoogleAdsRequest یک
MutateOperation تکراری را در فیلد mutate_operations خود میپذیرد:
- عملیات تغییر منبع: هر ورودی میتواند یک عملیات
create،update، یاremoveرا برای یک نوع منبع مشخص کند. - عملیات کنش: هر ورودی میتواند عملیات کنشی را نیز مشخص کند، مانند
book_campaigns_operationیاquote_campaigns_operation.
برای ایجاد نهادهای وابسته (مانند پویش و گروه آگهی) در یک فراخوانی GoogleAdsService.Mutate، دو ورودی MutateOperation ایجاد کنید (یکی حاوی CampaignOperation و دیگری حاوی AdGroupOperation). یک نام منبع موقت با شناسه منفی (مانند customers/CUSTOMER_ID/campaigns/-1) به پویش اختصاص دهید تا عملیات گروه آگهی بتواند در همان درخواست به آن ارجاع دهد:
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
اتمی بودن و شکست جزئی
بهطور پیشفرض، عملیات در درخواست GoogleAdsService.Mutate
بهصورت اتمی اجرا میشود: همه عملیات باهم موفق میشوند، یا اگر هر عملیاتی حاوی خطا باشد، کل درخواست ناموفق میشود.
مانند سرویسهای منبع فردی، این نقطه پایانی از گزینههای زیر پشتیبانی میکند:
- ناموفق جزئی
(
partial_failure = true): عملیات معتبر را ثبت میکند و برای عملیات ناموفق درpartial_failure_errorخطا برمیگرداند. - حالت اعتبارسنجی (
validate_only = true): عملیات را ازنظر وجود خطا بررسی میکند بدون اینکه تغییرات را در حساب اعمال کند:- عملیات تغییر منبع: فقط خطاهای اعتبارسنجی را برمیگرداند و نتایج را حذف میکند.
- عملیات کنش: درصورت موفقیت اعتبارسنجی، نتیجه کنش (مانند
quote_campaigns_resultیاbook_campaigns_result) را برمیگرداند؛ اگر خطاهای اعتبارسنجی رخ دهد، نتیجه کنش ازMutateOperationResponseحذف میشود (اگرچه ممکن است همچنان مظنه درErrorDetails.reservation_error_detailsبرگردانده شود). توجه داشته باشید کهquote_campaigns_operationبهvalidate_only = trueوpartial_failure = falseنیاز دارد.