Python と Bing Ads API の使用を開始する

Python を使用して Bing Ads API アプリケーションの開発を開始するには、 提供されている例 から始めるか、 Web または デスクトップ アプリケーションのアプリケーション チュートリアルのいずれかに従うことができます。

運用環境またはサンドボックスのいずれかで Microsoft Advertising にアクセスできるユーザー資格情報が必要です。 運用環境では、 運用環境の開発者トークンが必要です。 すべてのサンドボックス クライアントは、ユニバーサル サンドボックス開発者トークン ( BBD37VB98 など) を使用できます。 詳細については、「 Bing Ads API と サンドボックスの概要」を参照してください。

OAuth 経由で認証するには、アプリケーションを登録し、対応するクライアント識別子を取得する必要もあります。 Web アプリケーションを開発している場合は、クライアント シークレットとリダイレクト URI をメモする必要もあります。 本番環境でのアプリケーションの登録と認証コード付与フローの詳細については、「 OAuth を使用した認証 」および 「SDK を使用した認証」を参照してください。 本番環境では独自のアプリケーション ID (クライアント ID) を使用する必要がありますが、すべての Microsoft 広告のお客様は、サンドボックスで公開されている "チュートリアル サンプル アプリ" クライアント ID ( 000011111-aaaa-2222-bbbb-3333cccc4444 など) を使用できます。 詳細については、「 サンドボックス」を参照してください。

依存関係

Bing 広告 Python SDK では、Python 3.8 以降がサポートされます。 サポートされているバージョンのいずれかをインストールして実行する必要があります。

REST ベースの SDK は、自動的にインストールされる以下のパッケージに依存しています。

SDK のインストール

初めて Bing Ads Python SDK をインストールするには、IDE またはコマンド ライン プロンプトから次を実行します。

pip.exe install msads

Bing Ads Python SDK がインストールされていることを確認するには、次を実行します。 出力リストに msads (<version>) が表示されます。

pip.exe list

すでに Bing Ads Python SDK がインストールされている場合は、このコマンドを実行して最新のビットを取得できます。

pip.exe install --upgrade msads

チュートリアル

Bing Ads Python SDK をインストールしたら、 GitHub からサンプルをダウンロードするか、 チュートリアル: Python での Bing Ads API Web アプリケーション またはチュートリアル: Python アプリケーション での Bing Ads API デスクトップ アプリケーションの アプリケーション チュートリアルのいずれかに従ってください。

REST SDK を使用する

Bing Ads Python SDK は、 Pydantic モデルにサポートされている OpenAPI 生成クライアント クラスを使用して、Microsoft Advertising REST API と通信します。 この API は、認証ヘッダー、エンドポイント ルーティング、およびメソッド ディスパッチを自動的に処理する ServiceClient インスタンスを使用して操作します。

ServiceClient の設定

サービス名、API バージョン、承認データ、ターゲット環境を渡して、 ServiceClient を作成します。

from bingads.service_client import ServiceClient

campaign_service = ServiceClient(
    service='CampaignManagementService',
    version=13,
    authorization_data=authorization_data,
    environment=ENVIRONMENT,  # 'production' or 'sandbox'
)

サポートされているサービス名は、 CampaignManagementService、 BulkService、 ReportingService、 CustomerManagementService、 CustomerBillingService、 AdInsightService です。

オブジェクトの作成

モデル クラスを openapi_client.models.campaign から直接インポートし、キーワード (keyword)引数を使用してインスタンス化します。 ArrayOf*ラッパー型はありません — フィールドが複数の項目を受け入れる場合、プレーンな Python リストを使用してください。

from openapi_client.models.campaign import *

campaign = Campaign(
    name="Women's Shoes",
    daily_budget=50.0,
    budget_type=BudgetLimitType.DAILYBUDGETSTANDARD,
    time_zone='PacificTimeUSCanadaTijuana',
    languages=['All'],
)

ExpandedTextAd などの派生型の場合は、具象サブクラスを直接インスタンス化します。ファクトリ呼び出しや特別なエンコードは必要ありません。 カスタム パラメーターやその他の入れ子になったオブジェクトは、コンストラクターを介してインラインで設定できます。

expanded_text_ad = ExpandedTextAd(
    title_part1='Contoso',
    title_part2='Quick & Easy Setup',
    title_part3='Seamless Integration',
    text='Find New Customers & Increase Sales!',
    text_part2='Start Advertising on Contoso Today.',
    path1='seattle',
    path2='shoe sale',
    # With FinalUrls you can separate the tracking template, custom parameters,
    # and landing page URLs.
    final_urls=['https://www.contoso.com/womenshoesale'],
    # Final Mobile URLs can also be used if you want to direct the user to a
    # different page for mobile devices.
    final_mobile_urls=['https://mobile.contoso.com/womenshoesale'],
    # Set custom parameters that are specific to this ad.
    url_custom_parameters=CustomParameters(
        parameters=[
            CustomParameter(key='promoCode', value='PROMO' + str(index)),
            CustomParameter(key='season', value='summer'),
        ]
    ),
)

ads = [expanded_text_ad]

サービス操作の呼び出し

要求オブジェクトを作成し、 ServiceClient の対応するメソッドに渡します。 メソッドではsnake_case名前付けが使用されます。

add_request = AddCampaignsRequest(
    account_id=authorization_data.account_id,
    campaigns=[campaign],
)
response = campaign_service.add_campaigns(add_campaigns_request=add_request)
campaign_id = response.campaign_ids[0]

認証

REST SDK では、標準の Authorization: Bearer <token> HTTP ヘッダーが使用されます。 OAuth フロー (認証コードの付与、更新トークンの処理、トークンの保管) は、SOAP SDK と同じです。 詳細については、「 SDK での認証」を参照してください。

エラー処理

サービス エラーは、openapi_client パッケージからApiExceptionとして発生します。 例外は、HTTP 状態コードとエラー応答本文を公開します。

from openapi_client.exceptions import ApiException

try:
    response = campaign_service.GetCampaignsByAccountId(
        AccountId=authorization_data.account_id,
        CampaignType='Search'
    )
except ApiException as ex:
    print(f"HTTP status {ex.status}: {ex.body}")

応答本文で返されるバッチ エラーの解析については、「 サービス エラーと例外の処理」を参照してください。

関連項目

Bing 広告 API クライアント ライブラリ
Bing 広告 API のコード例
Bing 広告 API Web サービス アドレス
サービス エラーと例外の処理
サンドボックス