Mutate

大多数资源都是使用 Mutate 方法进行修改(创建、更新或移除)。Mutate 方法会作为 HTTP POST 调用到与资源名称模式匹配的资源专用网址(不带尾随资源 ID)。相反,要更改的资源的 ID 会发送在 JSON 请求正文中。这样,您就可以发送包含对不同资源的多项操作的单个 API 调用。

例如,广告系列的资源名称采用以下格式:

customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID

如需派生用于更改广告系列的网址,请省略尾部的资源 ID 并附加 :mutate

https://googleads.googleapis.com/v19/customers/CUSTOMER_ID/campaigns:mutate

Mutate 消息包含一个顶级 JSON 对象,其中包含一个 operations 数组,该数组可以包含多个 operation 对象。每个操作可以是以下各项之一:createupdateremove。这些是唯一可能的更改操作。

POST /v19/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
  "operations": [
    ...
  ]
}

大多数服务都支持在单次 API 调用中执行数千项操作。系统限制指南介绍了对请求大小的限制。

默认情况下,单个 API 请求中的操作会作为一组操作执行,这意味着所有操作要么都成功,要么都失败(如果其中任何单个操作失败,整个批处理都会失败)。某些服务支持 partialFailure 属性来更改此行为。如需详细了解更改操作语义,请参阅更改资源

创建

创建操作会生成新的实体,并且必须包含您打算创建的资源的完整 JSON 表示法。

POST /v19/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_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 对象即可。

以下示例更改了具有给定 resourceName 的现有广告系列的 namestatus

POST /v19/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
  "operations": [
    {
      "updateMask": "name,status",
      "update": {
        "resourceName": "customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID",
        "name": "My renamed campaign",
        "status": "PAUSED",
      }
    }
  ]
}

移除

移除操作会有效地删除对象,并将其 Google Ads 状态设置为 REMOVED。只需提供要移除的 resourceName 即可。

POST /v19/customers/CUSTOMER_ID/campaigns:mutate HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
  "operations": [
    {
      "remove": "customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID"
    }
  ]
}