サービスと型ゲッター

Python で API を使用するために必要なすべての proto クラスへの参照をすべて取得するには冗長な処理を行う可能性があるため、API の本質的な知識を持っている必要があります。また、proto やドキュメントを参照するために頻繁にコンテキスト スイッチが必要になります。

クライアントの get_service メソッドと get_type メソッド

この 2 つのゲッター メソッドを使用すると、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 v16 version of GoogleAdsService will
# be returned.
client = GoogleAdsClient.load_from_storage(version="v16")
googleads_service = client.get_service("GoogleAdsService")

get_type メソッドを使用して Campaign インスタンスを取得する方法の例を次に示します。

from google.ads.googleads.client import GoogleAdsClient

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

列挙型

get_type メソッドを使用して列挙型を取得できますが、各 GoogleAdsClient インスタンスには enums 属性もあり、get_type メソッドと同じメカニズムを使用して列挙型を動的に読み込みます。このインターフェースは、get_type を使用するよりもシンプルで読みやすいように設計されています。

client = GoogleAdsClient.load_from_storage(version=v16)

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

列挙型である Proto オブジェクト フィールドは、Python ではネイティブの 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 のどちらに設定されているかによって異なります。2 つのインターフェースの詳細については、protobuf メッセージのドキュメントをご覧ください。

バージョニング

API の複数のバージョンが同時に維持されます。v16 が最新バージョンである可能性もありますが、それ以前のバージョンは廃止されるまで引き続きアクセスできます。このライブラリには、アクティブな API バージョンに対応する個別の proto メッセージ クラスが含まれます。特定のバージョンのメッセージ クラスにアクセスするには、クライアントの初期化時に version キーワード パラメータを指定して、常にそのバージョンからのインスタンスを返すようにします。

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

get_service メソッドと get_type メソッドを呼び出すときにバージョンを指定することもできます。これにより、クライアントの初期化時に指定したバージョンがオーバーライドされます。

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

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

version キーワード パラメータが指定されていない場合、ライブラリはデフォルトで最新バージョンを使用します。最新およびその他の利用可能なバージョンの最新リストは、API リファレンス ドキュメントの左側のナビゲーション セクションにあります。