空のメッセージ オブジェクトをフィールドとして設定する

Google Ads API では、一部のメッセージ フィールドが空のメッセージ オブジェクトとして定義されているため、 campaign.manual_cpm など あるいは、設定する必要がないオプション フィールドだけがある場合もあります(例: campaign.manual_cpc。これらを の各フィールドは、API に対し、特定のタイプの入札戦略を わかりやすくなりましたが、メッセージが空になっていると直感的にわかりづらくなります。

文字列である campaign.name フィールドを更新する場合は、このフィールドを設定します。 通常の Python オブジェクト属性のように直接更新します。

campaign.name = "Test campaign value"

campaign.manual_cpc はネストされたフィールドです。つまり、次が含まれます 別の protobuf メッセージであり、文字列などのプリミティブ型ではありません。マイページ フィールドを直接更新することもできます。

campaign.manual_cpc.enhanced_cpc_enabled = True

これにより、このキャンペーンの入札戦略が「manual_cpc」であることが API に通知されます。 拡張クリック単価を有効にして

しかし、空の manual_cpm を使用する場合はどうすればよいでしょうか。または manual_cpc 拡張クリック単価を有効にしない場合そのためには、コピーしたファイルのコピーを クラスの空のインスタンスをキャンペーンに追加します。次に例を示します。

client = GoogleAdsClient.load_from_storage()

empty_cpm = client.get_type('ManualCpm')
client.copy_from(campaign.manual_cpm, empty_cpm)

campaign オブジェクトに manual_cpm がどのように指定されるかに注意してください。

name {
  value: "Test campaign value"
}
manual_cpm {
}

manual_cpm フィールドが設定されていますが、どのフィールドにも値がありません。送信時 このパターンを使用する API にリクエストを送信すると、 正しく空のメッセージ オブジェクトを取得するには、logging を有効にし、 使用します。

最後に、このフィールドをリクエストオブジェクトの update_mask。フィールド マスク ヘルパーには、 明示的に空のオブジェクトに設定されたフィールドと、 表示されます。

from google.api_core.protobuf_helpers import field_mask

campaign_operation.create = campaign
campaign_operation.update_mask = field_mask(None, campaign)
# Here we manually add the "manual_cpm" field
campaign_operation.update_mask.append("manual_cpm")