大多數資源都是使用 Mutate 方法修改 (建立、更新或移除)。系統會以 HTTP POST 形式,對符合資源名稱模式的資源專屬網址叫用 Mutate 方法,但不含尾端資源 ID。要變更的資源 ID 則會透過 JSON 要求主體傳送。這樣一來,您就能傳送單一 API 呼叫,其中包含對不同資源執行的多項作業。
舉例來說,廣告活動的資源名稱會採用下列格式:
customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID
如要衍生用於變更廣告活動的網址,請省略尾端資源 ID,並附加 :mutate:
https://googleads.googleapis.com/v26/customers/CUSTOMER_ID/campaigns:mutate
Mutate 訊息包含頂層 JSON 物件,其中含有可包含多個 operation 物件的 operations 陣列。每個作業依序可以是 create、update 或 remove。這些是唯一可用的變動作業。
POST /v26/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN { "operations": [ ... ] }
大多數服務在單一 API 呼叫中支援數千項作業。系統限制指南會記錄要求大小的限制。
根據預設,單一 API 要求中的作業會以一組動作的形式執行,也就是說,如果任何單一作業失敗,整批作業就會失敗,否則所有作業都會一併成功。部分服務支援 partialFailure 屬性,可變更這項行為。如要進一步瞭解異動作業語意,請參閱「異動資源」。
建立
建立作業會產生新實體,且必須包含您要建立的資源完整 JSON 表示法。
POST /v26/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN { "operations": [ { "create": { "name": "An example campaign", "status": "PAUSED", "campaignBudget": "customers/CUSTOMER_ID/campaignBudgets/CAMPAIGN_BUDGET_ID", "advertisingChannelType": "SEARCH", "networkSettings": { "targetGoogleSearch": true, "targetSearchNetwork": true, "targetContentNetwork": true, "targetPartnerSearchNetwork": false }, "target_spend": {} } } ] }
更新
更新作業會對現有資源執行稀疏更新。您只需要指定要修改的欄位。
如要指定要更新的欄位,請將 updateMask 屬性設為以半形逗號分隔的欄位名稱清單。如果您已有完整的 JSON 物件表示法 (例如先前 API 呼叫傳回的物件),但只想變更特定欄位,這種做法特別實用。您不必刪減 JSON 物件,只要在 updateMask 中列出要修改的欄位名稱,然後傳送整個 JSON 物件即可。
以下範例會變更現有廣告活動的 name 和 status,並指定 resourceName。
POST /v26/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN { "operations": [ { "updateMask": "name,status", "update": { "resourceName": "customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID", "name": "My renamed campaign", "status": "PAUSED", } } ] }
移除
移除作業會有效刪除物件,並將 Google Ads 廣告狀態設為 REMOVED。只要提供要移除的 resourceName 即可。
POST /v26/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1 Host: googleads.googleapis.com Content-Type: application/json Authorization: Bearer ACCESS_TOKEN { "operations": [ { "remove": "customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID" } ] }