配置

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

您可以通过多种不同方式配置客户端。

使用 YAML 文件进行配置

您可以指定在初始化包含发出请求所需的身份验证信息的客户端时使用的 YAML 文件。此文件在客户端使用 load_from_storage 方法初始化时访问。生成此文件的最简单方法是从 GitHub 代码库复制 google-ads.yaml 示例,并修改该文件以包含您的凭据,包括您的开发者令牌、刷新令牌、客户端 ID 和客户端密钥。

如需指定 google-ads.yaml 文件的位置,您可以在调用方法时以字符串形式将路径传递给该方法:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")

您还可以通过定义特定环境变量来指定路径:

import os

os.environ["GOOGLE_ADS_CONFIGURATION_FILE_PATH"] = "path/to/google-ads.yaml"
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

如果这两个值均已提供(即已传入该方法的路径),且存在上述环境变量,则该库会优先考虑传递到该方法的路径。

如果您未提供路径,则库将在 $HOME 目录中查找该文件:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

使用环境变量进行配置

您可以将所有客户端配置存储为环境变量,系统会在使用客户端的 load_from_env 方法时读取这些配置。环境变量应该与 google-ads.yaml 文件中定义的名称相同,但应全部大写,并以 GOOGLE_ADS_ 命名空间为前缀。例如,client_id 应存储为 GOOGLE_ADS_CLIENT_ID

环境变量通常在 bash 配置文件中定义,例如位于 $HOME 目录中的 .bashrc.bash_profile 文件。您也可以使用命令行对其进行定义。请注意,以下说明假定您使用的是 bash。如果您使用的是其他 shell,则可能需要参阅文档,了解如何在当前使用的 shell 中设置环境变量。

以下是使用终端通过 .bashrc 文件定义环境变量的一些基本步骤:

# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
$ echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc
# Update your bash environment to use the most recently updated
# version of your .bashrc file.
$ src ~/.bashrc

您也可以直接在终端实例中设置环境变量:

$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890

load_from_env 方法会从 Python 的内置 os 模块中的 environ 特性加载配置数据。例如: os.environ["GOOGLE_ADS_CLIENT_ID"]

以下示例展示了如何使用环境变量的配置初始化客户端实例:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_env()

如需通过环境变量配置 logging,配置值必须是与示例 google-ads.yaml 配置文件中的 YAML 密钥结构匹配的 JSON 对象。

以下示例展示了如何使用 .bashrc 文件进行设置:

export GOOGLE_ADS_LOGGING='{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
    "default_fmt": {
      "format": "[%(asctime)s - %(levelname)s] %(message).5000s",
      "datefmt": "%Y-%m-%d %H:%M:%S"
    }
  },
  "handlers": {
    "default_handler": {
      "class": "logging.StreamHandler",
      "formatter": "default_fmt"
    }
  },
  "loggers": {
    "": {
      "handlers": ["default_handler"],
      "level": "INFO"
    }
  }
}'

使用 YAML 字符串的配置

如果您已将 YAML 文件读入内存,则可以在初始化时直接将其提供给客户端。为此,只需使用 load_from_string 方法即可。

from google.ads.googleads.client import GoogleAdsClient

with open("/path/to/yaml", "rb") as handle:
    yaml = handle.read()

client = GoogleAdsClient.load_from_string(yaml)

使用 dict 进行配置

您可以直接将 dict 传递给 load_from_dict 方法。例如:

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "developer_token": "abcdef123456",
    "refresh_token": "1//0abcdefghijklABCDEF",
    "client_id": "123456-abcdef.apps.googleusercontent.com",
    "client_secret": "aBcDeFgHiJkL"}

client = GoogleAdsClient.load_from_dict(credentials)

配置字段

客户端库配置支持以下字段。

常规字段(无论您使用 YAML 还是 dict 配置,这些名称都相同):

  • refresh_token:您的 OAuth 刷新令牌。
  • client_id:您的 OAuth 客户端 ID。
  • client_secret:您的 OAuth 客户端密钥。
  • developer_token:用于访问 API 的开发者令牌。
  • login_customer_id:请参阅 login-customer-id 文档
  • linked_customer_id:请参阅 linked-customer-id 文档
  • json_key_file_path(以前称为 path_to_private_key_file):本地私钥文件的路径。这用于使用服务帐号进行身份验证。请参阅 OAuth2 服务帐号文档
  • impersonated_email(以前称为 delegate_account):帐号电子邮件会用作代理。这用于使用服务帐号进行身份验证。请参阅 OAuth2 服务帐号文档
  • logging:日志记录配置。Logging 字段如下所述。
  • http_proxy:请参阅代理文档
  • use_proto_plus:是否使用 proto-plus 消息。请参阅 Protobuf 消息文档。

作为环境变量的常规字段:

  • GOOGLE_ADS_CONFIGURATION_FILE_PATH
  • GOOGLE_ADS_REFRESH_TOKEN
  • GOOGLE_ADS_CLIENT_ID
  • GOOGLE_ADS_CLIENT_SECRET
  • GOOGLE_ADS_DEVELOPER_TOKEN
  • GOOGLE_ADS_LOGIN_CUSTOMER_ID
  • GOOGLE_ADS_LINKED_CUSTOMER_ID
  • GOOGLE_ADS_JSON_KEY_FILE_PATH(以前称为 GOOGLE_ADS_PATH_TO_PRIVATE_KEY_FILE
  • GOOGLE_ADS_IMPERSONATED_EMAIL(以前称为 GOOGLE_ADS_DELEGATE_ACCOUNT
  • GOOGLE_ADS_LOGGING
  • GOOGLE_ADS_HTTP_PROXY
  • GOOGLE_ADS_USE_PROTO_PLUS

日志记录字段是 logging 配置字段下的字段,直接从 logging.config 内置模块派生,因为该库会将 logging 命名空间下的所有字段直接传递给 logging.config.dictConfig 方法。如需了解完整详情,请参阅日志记录指南

  • version:表示架构版本的整数值。
  • disable_existing_loggers:是否应停用应用中其他位置配置的日志记录器。
  • formatters:定义不同类型的格式化程序的字典。
  • handlers:定义不同处理程序的字典,用于控制将日志写入何处以及应使用哪些格式化程序。
  • loggers:定义不同类型日志记录器(包括处理程序和日志级别)的字典。