將空白訊息物件設為欄位

在 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

這樣 API 就能知道這個廣告活動的出價策略為 manual_cpc 並啟用成本效益管理系統。

但如要使用 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 提出要求,即可確認已設定 啟用記錄並檢查 而非酬載

最後,您必須將這個欄位手動新增至要求物件的 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")