اشیاء پیام خالی را به عنوان فیلد تنظیم کنید

در API گوگل ادز، از برخی فیلدهای پیام برای نشان دادن انتخاب استراتژی پیشنهاد قیمت برای یک کمپین استفاده می‌شود. این فیلدها می‌توانند موارد زیر باشند:

  • پیام‌های واقعاً خالی: برای مثال، campaign.manual_cpm هیچ زیرفیلد تعریف‌شده‌ای ندارد.
  • پیام‌هایی با فیلدهای اختیاری: برای مثال، campaign.manual_cpc دارای زیرفیلد اختیاری enhanced_cpc_enabled است.

برای به‌روزرسانی یک فیلد اولیه مانند campaign.name ، آن را مستقیماً تنظیم می‌کنید:

campaign.name = "Test campaign value"

برای به‌روزرسانی یک پیام تودرتو با زیرفیلدهای قابل تنظیم، مانند campaign.manual_cpc هنگام فعال کردن Enhanced CPC، آن را به صورت زیر تنظیم کنید:

campaign.manual_cpc.enhanced_cpc_enabled = True

پیام‌های واقعاً خالی تنظیم کنید

برای استفاده از یک استراتژی پیشنهاد قیمت مانند manual_cpm که یک پیام خالی است:

  1. یک نمونه خالی از نوع پیام ( ManualCpm ) دریافت کنید.
  2. از client.copy_from برای اختصاص این نمونه خالی به فیلد کمپین استفاده کنید.
  3. نام فیلد ( manual_cpm ) را به صورت دستی به update_mask در CampaignOperation اضافه کنید. تابع کمکی field mask نمی‌تواند به طور خودکار تشخیص دهد که یک پیام خالی به طور صریح تنظیم شده است.
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.

# 1. Get an empty ManualCpm type
empty_cpm = client.get_type('ManualCpm')
# 2. Copy it to the campaign's manual_cpm field
client.copy_from(campaign.manual_cpm, empty_cpm)

# 3. Manually add "manual_cpm" to the update_mask.
from google.api_core.protobuf_helpers import field_mask
campaign_operation = client.get_type('CampaignOperation')
campaign_operation.update = campaign
campaign_operation.update_mask = field_mask(None, campaign)
campaign_operation.update_mask.paths.append("manual_cpm")

# The resulting proto sent to the API will include:
# manual_cpm {
# }

پیام‌ها را با زیرفیلدهای اختیاری تنظیم کنید

برای استفاده از manual_cpc به عنوان استراتژی پیشنهاد قیمت بدون فعال کردن enhanced_cpc_enabled ، می‌توانید رویکردی مشابه ManualCpm را امتحان کنید. با این حال، از آنجا که ManualCpc دارای زیرفیلد است، اضافه کردن manual_cpc به update_mask منجر به خطای FieldMaskError.FIELD_HAS_SUBFIELDS می‌شود. API زمانی که پیامی در ماسک دارای زیرفیلد باشد، به جزئیات بیشتری نیاز دارد.

برای تنظیم صحیح campaign.manual_cpc در حالی که مطمئن شوید enhanced_cpc_enabled تنظیم نشده باقی می‌ماند:

  1. یک شیء ManualCpc خالی را نمونه‌سازی کرده و آن را به campaign.manual_cpc اختصاص دهید.
  2. مسیر هر زیرفیلد تغییرپذیر ManualCpc را به صورت دستی به update_mask در CampaignOperation اضافه کنید. در این حالت، زیرفیلد مربوطه enhanced_cpc_enabled است.
client = GoogleAdsClient.load_from_storage()
# Assume 'campaign' is an existing Campaign object you are updating.

# 1. Instantiate and assign an empty ManualCpc
campaign.manual_cpc = client.get_type('ManualCpc')

# 2. Manually add the subfield path to the update_mask.
from google.api_core.protobuf_helpers import field_mask
campaign_operation = client.get_type('CampaignOperation')
campaign_operation.update = campaign
campaign_operation.update_mask = field_mask(None, campaign)

# For ManualCpc, because it has subfields, you MUST specify the subfield
# path in the update_mask. This tells the API you are updating something
# within manual_cpc. By not setting enhanced_cpc_enabled on the campaign
# object, it defaults to false.
campaign_operation.update_mask.paths.append("manual_cpc.enhanced_cpc_enabled")

# The update_mask paths will include: ['manual_cpc.enhanced_cpc_enabled']
# This correctly signals to the API that ManualCpc is the chosen strategy,
# with enhanced_cpc_enabled in its default state.

هنگام ارسال درخواست‌ها با استفاده از این الگوها، می‌توانید با فعال کردن ثبت وقایع و بررسی درخواست، میزان بار داده (payload) را تأیید کنید.