Google Ads API では、入札戦略の選択を示すために一部のメッセージ フィールドが使用されます。 キャンペーンたとえば、次のようなものがあります。
- 完全に空のメッセージ: たとえば、
campaign.manual_cpmには サブフィールドが定義されていません。 - オプションのフィールドを含むメッセージ: たとえば、
campaign.manual_cpcにはオプションのサブフィールドenhanced_cpc_enabledがあります。
campaign.name などのプリミティブ フィールドを更新するには、直接設定します。
campaign.name = "Test campaign value"
拡張クリック単価を有効にする際に、設定可能なサブフィールドを含むネストされたメッセージ(campaign.manual_cpc など)を更新するには、次のように設定します。
campaign.manual_cpc.enhanced_cpc_enabled = True
完全に空のメッセージを設定する
空の
メッセージである
manual_cpmなどの入札戦略を使用するには:
- メッセージ タイプ
(
ManualCpm)の空のインスタンスを取得します。 client.copy_fromを使用して、この空のインスタンスをキャンペーンのフィールドに割り当てます。-
CampaignOperationのupdate_maskにフィールド名(manual_cpm)を手動で追加します。フィールド マスク ヘルパーは、空のメッセージが明示的に設定されていることを自動的に検出できません。
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 {
# }
オプションのサブフィールドを含むメッセージを設定する
enhanced_cpc_enabled を有効にせずに manual_cpc を入札戦略として使用するには、ManualCpm と同様の方法を試すことができます。ただし、ManualCpc には
サブフィールドがあるため、manual_cpc を
update_mask に追加すると、
FieldMaskError.FIELD_HAS_SUBFIELDS
エラーが発生します。マスク内のメッセージにサブフィールドがある場合、API ではより具体的な指定が必要になります。
enhanced_cpc_enabled を設定せずに campaign.manual_cpc を正しく設定するには:
- 空の
ManualCpcオブジェクトをインスタンス化して、campaign.manual_cpcに割り当てます。 -
update_maskのCampaignOperationに、ManualCpcの変更可能な各サブフィールドへのパスを手動で追加します。この場合、関連するサブフィールドは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.
これらのパターンを使用してリクエストを送信する場合は、ペイロードを 確認するには、ロギングを有効にして リクエストを検査します。