設定

您可以透過多種方式設定用戶端。

使用 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 目錄中查看檔案的 $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 檔案。您也可以使用指令列定義這些 API。請注意,這些操作說明假設您使用的是 bash,如果您使用其他殼層,可能需要參閱說明文件,瞭解如何在目前使用的殼層中設定環境變數。

以下是透過終端機使用 .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,設定值必須是 JSON 物件,且此 JSON 物件與範例 google-ads.yaml 設定檔中的 YAML 金鑰結構相符。

以下範例說明如何使用 .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 或字典設定,這些欄位的名稱都相同):

  • 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:記錄設定。以下說明記錄欄位。
  • http_proxy:請參閱 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:定義不同類型記錄器的字典,其中包含處理常式和記錄層級。