跳转到内容

GoogleAdsAPI使用指南

Google Ads 是 Google 的一个广告投放工具,本指南提供 Google Ads API 的使用与集成解决方案。

Terminal window
pip install google-ads
  • 在 GCP 项目中创建 OAuth2.0 Client 授权信息(可以使用 desktop 类型):

  • 在 Ads 经理账户(需要正式账户)中创建 Developer Token:

  • 获取对应的 Ads 账户 ID 信息:

    一般需获取 Manager Account IDAccount ID

  • 授权并且初始化客户端:

import os
from google.ads.googleads.client import GoogleAdsClient
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
client_account_path = "client_account.json" # GCP 生成的授权文件
client_accountbat_path = "client_account.bat" # 授权缓存路径
scope = ["https://www.googleapis.com/auth/adwords"] # 授权范围
manager_account_id = "" # 经理账户 ID
developer_token = "" # Ads 生成的 developer token 信息
if os.path.exists(client_accountbat_path):
credentials = Credentials.from_authorized_user_file(client_accountbat_path, scope)
if not credentials or not credentials.valid:
if credentials and credentials.expired and credentials.refresh_token:
credentials.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(client_account_path, scope)
credentials = flow.run_local_server(port=0)
with open(client_accountbat_path, 'w') as token:
token.write(credentials.to_json())
client = GoogleAdsClient(credentials=credentials, developer_token=developer_token, login_customer_id=manager_account_id)
  • 授权效果展示:

  • 在 GCP 项目中创建 Server Account 授权信息:

  • 注册 Google Workspace:

  • 取消 Workspace 服务订阅:

  • 验证 Workspace 网域:

  • Google Workspace 添加对应服务账户:

  • 将 Email 分配到对应的 Google Ads 账户:

  • 在 Ads 经理账户(需要正式账户)中创建 Developer Token:

  • 获取对应的 Ads 账户 ID 信息:

    一般需获取 Manager Account IDAccount ID

  • 授权并且初始化客户端:

from google.ads.googleads.client import GoogleAdsClient
server_account_path = "server_account.json" # GCP 生成的授权文件
scope = ["https://www.googleapis.com/auth/adwords"] # 授权范围
manager_account_id = "" # 经理账户 ID
developer_token = "" # Ads 生成的 developer token 信息
workspace_email = ""
credentials = {
"developer_token": developer_token,
"json_key_file_path": server_account_path,
"impersonated_email": workspace_email,
"login_customer_id": manager_account_id,
"use_proto_plus": False
}
client = GoogleAdsClient.load_from_dict(credentials)
  • 获取对应服务类型:
ga_service = client.get_service("GoogleAdsService")
  • 调取 API:
account_id = "" # ads 账户 ID
stream = ga_service.search_stream(customer_id=account_id, query="select campaign.name from campaign")
for batch in stream:
for row in batch.results:
print(
f"Campaign with ID {row.campaign.id} and name "
f'"{row.campaign.name}" was found.'
)
  • 账户分类
    • 账户结构
      • 经理账户:可以创建多个客户账户;并且只有经理账户可以创建 Developer Token。
      • 客户账户:用于真实的广告投放。
    • 账户类型
      • 正式账户:可以投放广告;并且 Developer Token 只有基础类型与标准类型可以调取该账户类型 API,测试类型不可以调取。
      • 测试账户:不可以投放广告;并且 Developer Token 基础类型、标准类型和测试类型都可以调取该账户类型 API。
  • Developer Token
    • 分类

      • 测试:只可以调取测试账户。
      • 基础:可以调取所有类型账户,有额度限制。
      • 标准:可以调取所有类型账户,没有额度限制。
    • 限制

      • 每个 Token 会在第一个请求中与 GCP 授权项目(生成 OAuth2.0 或者 Server Account 的项目)进行绑定,并且该绑定是永久的。如果重新生成了 Token,则该 GCP 必须重新创建(一个 Token 可以对应多个 GCP 项目)