Ad Manager SOAP API 是一项旧版 API,用于读取和写入 Ad Manager 数据以及运行报告。如果您可以迁移,我们建议您使用 Ad Manager API(Beta 版)。不过,Ad Manager SOAP API 版本在其典型生命周期内受支持。如需了解详情,请参阅 Ad Manager SOAP API 弃用时间表。
以下指南概述了 Ad Manager SOAP API 与 Ad Manager API(Beta 版)之间的差异。
学习
标准 Ad Manager SOAP API 服务方法在 Ad Manager API 中具有等效的概念。Ad Manager API 还提供了用于读取单个实体的相关方法。下表显示了 Order 方法的示例映射:
| SOAP 方法 | REST 方法 | 
|---|---|
getOrdersByStatement
 | 
networks.orders.get networks.orders.list | 
身份验证
如需使用 Ad Manager API(Beta 版)进行身份验证,您可以使用现有的 Ad Manager SOAP API 凭据,也可以创建新的凭据。无论您选择哪种方式,都必须先在 Google Cloud 项目中启用 Ad Manager API。如需了解详情,请参阅身份验证。
如果您使用的是客户端库,请将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为服务账号密钥文件的路径,以设置应用默认凭据。如需了解详情,请参阅应用默认凭据的工作原理。
如果您使用的是已安装的应用凭据,请按以下格式创建 JSON 文件,并将环境变量设置为其路径:
{
  "client_id": "CLIENT_ID",
  "client_secret": "CLIENT_SECRET",
  "refresh_token": "REFRESH_TOKEN",
  "type": "authorized_user"
}
替换以下值:
CLIENT_ID:您的新客户端 ID 或现有客户端 ID。CLIENT_SECRET:您的新客户端密钥或现有客户端密钥。REFRESH_TOKEN:新的或现有的刷新令牌。
Linux 或 macOS
export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATHWindows
set GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
了解过滤器方面的差异
Ad Manager API(Beta 版)查询语言支持所有发布商查询语言 (PQL) 功能,但存在明显的语法差异。
以下用于列出 Order 对象的示例展示了主要变更,例如移除了绑定变量、区分大小写的运算符,以及将 ORDER BY 和 LIMIT 子句替换为单独的字段:
Ad Manager SOAP API
<filterStatement>
  <query>WHERE name like "PG_%" and lastModifiedDateTime >= :lastModifiedDateTime ORDER BY id ASC LIMIT 500</query>
  <values>
    <key>lastModifiedDateTime</key>
    <value xmlns:ns2="https://www.google.com/apis/ads/publisher/v202502" xsi:type="ns2:DateTimeValue">
      <value>
        <date>
          <year>2024</year>
          <month>1</month>
          <day>1</day>
        </date>
        <hour>0</hour>
        <minute>0</minute>
        <second>0</second>
        <timeZoneId>America/New_York</timeZoneId>
      </value>
    </value>
  </values>
</filterStatement>
Ad Manager API(Beta 版)
JSON 格式
{
  "filter": "displayName = \"PG_*\" AND updateTime > \"2024-01-01T00:00:00-5:00\"",
  "pageSize": 500,
  "orderBy":  "name"
}
网址编码
GET https://admanager.googleapis.com/v1/networks/123/orders?filter=displayName+%3D+\"PG_*\"+AND+updateTime+%3E+\"2024-01-01T00%3A00%3A00-5%3A00\"
Ad Manager API(Beta 版)支持所有 PQL 功能,但与 Ad Manager SOAP API 存在以下语法差异:
在 Ad Manager API(Beta 版)中,
AND和OR运算符区分大小写。小写的and和or会被视为裸字面量搜索字符串,这是 Ad Manager API(Beta 版)中用于跨字段搜索的功能。使用大写运算符
// Matches unarchived Orders where order.notes has the value 'lorem ipsum'. notes = "lorem ipsum" AND archived = false将小写字符串视为字面量
// Matches unarchived Orders where order.notes has the value 'lorem ipsum' // and any field in the order has the literal value 'and'. notes = "lorem ipsum" and archived = false字符
*是用于字符串匹配的通配符。Ad Manager API(Beta 版)不支持like运算符。Ad Manager SOAP API PQL
// Matches orders where displayName starts with the string 'PG_' displayName like "PG_%"Ad Manager API(Beta 版)
// Matches orders where displayName starts with the string 'PG_' displayName = "PG_*"字段名称必须显示在比较运算符的左侧:
有效过滤条件
updateTime > "2024-01-01T00:00:00Z"过滤条件无效
"2024-01-01T00:00:00Z" < updateTimeAd Manager API(Beta 版)不支持绑定变量。所有值都必须内嵌。
包含空格的字符串字面量必须用英文双引号括起来,例如
"Foo bar"。您不能使用单引号来封装字符串字面量。
移除排序子句
在 Ad Manager API(Beta 版)中,指定排序顺序是可选的。如果您想为结果集指定排序顺序,请移除 PQL ORDER BY 子句,改为设置 orderBy 字段:
GET networks/${NETWORK_CODE}/orders?orderBy=updateTime+desc
从偏移量迁移到分页令牌
Ad Manager API(Beta 版)使用分页令牌(而非 LIMIT 和 OFFSET 子句)对大型结果集进行分页。
Ad Manager API(Beta 版)使用 pageSize 参数来控制页面大小。与 Ad Manager SOAP API 中的 LIMIT 子句不同,省略页面大小不会返回整个结果集。相反,列表方法使用默认的页面大小 50。以下示例将 pageSize 和 pageToken 设置为网址参数:
# Initial request
GET networks/${NETWORK_CODE}/orders?pageSize=50
# Next page
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
与 Ad Manager SOAP API 不同,Ad Manager API(Beta 版)返回的结果可能少于请求的页面大小,即使有其他页面也是如此。使用 nextPageToken 字段确定是否有其他结果。
虽然分页不需要偏移量,但您可以使用 skip 字段进行多线程处理。使用多线程时,请使用第一页中的分页令牌,以确保您从同一结果集中读取数据:
# First thread
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
# Second thread
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}&skip=50