服務和類型 Getter

在 Python 中使用 API 時,擷取參照所需的所有各種 proto 類別,可能會產生冗長的輸出內容,而且您必須對 API 有內在的瞭解,或經常切換內容參照 proto 或說明文件。

用戶端的 get_serviceget_type 方法

這兩個 getter 方法可讓您擷取 API 中的任何服務或類型物件。get_service 方法用於擷取服務用戶端。get_type 則用於其他物件。服務用戶端類別會在版本路徑 google/ads/googleads/v*/services/services/ 下的程式碼中定義,所有類型則會在各種物件類別 google/ads/googleads/v*/common|enums|errors|resources|services/types/ 下定義。系統會產生版本目錄下方的所有程式碼,因此在程式碼集結構變更的情況下,建議您使用這些方法,而非直接匯入物件。

以下範例說明如何使用 get_service 方法擷取 GoogleAdsService 用戶端的例項。

from google.ads.googleads.client import GoogleAdsClient

# "load_from_storage" loads your API credentials from disk so they
# can be used for service initialization. Providing the optional `version`
# parameter means that the v18 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v18")
googleads_service = client.get_service("GoogleAdsService")

以下是如何使用 get_type 方法擷取 Campaign 例項的範例。

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v18")
campaign = client.get_type("Campaign")

列舉

雖然您可以使用 get_type 方法擷取 Enums,但每個 GoogleAdsClient 例項也都有 enums 屬性,可使用與 get_type 方法相同的機制動態載入 Enums。這個介面比使用 get_type 更簡單,也更容易讀取:

client = GoogleAdsClient.load_from_storage(version=v18)

campaign = client.get_type("Campaign")
campaign.status = client.enums.CampaignStatusEnum.PAUSED

在 Python 中,屬於列舉的 Proto 物件欄位會以原生 enum 類型表示。這表示您可以輕鬆讀取成員的值。在 Python repl 中使用先前範例中的 campaign 例項:

>>> print(campaign.status)
CampaignStatus.PAUSED
>>> type(campaign.status)
<enum 'CampaignStatus'>
>>> print(campaign.status.value)
3

有時您可能需要知道對應至上述列舉值的欄位名稱。您可以使用 name 屬性存取這項資訊:

>>> print(campaign.status.name)
'PAUSED'
>>> type(campaign.status.name)
<class 'str'>

與列舉互動的情形會因您是否將 use_proto_plus 設定為 truefalse 而有所不同。如要進一步瞭解這兩種介面,請參閱 protobuf 訊息說明文件

版本管理

同時維護多個 API 版本。雖然 v18 可能是最新版本,但舊版仍可使用,直到終止服務為止。程式庫會包含與每個有效 API 版本對應的個別 Proto 訊息類別。如要存取特定版本的訊息類別,請在初始化用戶端時提供 version 關鍵字參數,讓用戶端一律傳回該指定版本的例項:

client = GoogleAdsService.load_from_storage(version="/google-ads/api/reference/rpc/v18/")
# The Campaign instance will be from the v18 version of the API.
campaign = client.get_type("Campaign")

您也可以在呼叫 get_serviceget_type 方法時指定版本。這麼做會覆寫用戶端初始化時提供的版本:

client = GoogleAdsService.load_from_storage()
# This will load the v18 version of the GoogleAdsService.
googleads_service = client.get_service(
    "GoogleAdsService", version="v18")

client = GoogleAdsService.load_from_storage(version="v18")
# This will load the v16 version of a Campaign.
campaign = client.get_type("Campaign", version="v16")

如果未提供 version 關鍵字參數,程式庫預設會使用最新版本。如需最新和其他可用版本的最新清單,請前往 API 參考資料說明文件的左側導覽區。