通过必应广告 API 开始使用 Python

若要开始使用 Python 开发必应广告 API 应用程序,可以从 提供的示例 开始,或遵循 Web桌面 应用程序的应用程序演练之一。

你将需要具有在 生产沙盒中访问Microsoft广告的用户凭据。 对于生产环境,需要 生产开发人员令牌。 所有沙盒客户端都可以使用通用沙盒开发人员令牌,即 BBD37VB98。 有关详细信息,请参阅 必应广告 API沙盒入门。

若要通过 OAuth 进行身份验证,还必须注册应用程序并获取相应的客户端标识符。 如果要开发 Web 应用程序,还需要记下客户端密码和重定向 URI。 有关在生产环境中注册应用程序和授权代码授予流的详细信息,请参阅 使用 OAuth 进行身份验证和使用 SDK 进行身份验证。 尽管在生产环境中必须使用自己的应用程序 ID (即客户端 ID) ,但所有Microsoft广告客户都可以使用沙盒中的公共“教程示例应用”客户端 ID,即 00001111-aaaa-2222-bbbb-3333cccc4444。 有关详细信息,请参阅 沙盒

相关性

必应广告 Python SDK 支持 Python 3.8 或更高版本。 应安装并运行其中一个受支持的版本。

基于 REST 的 SDK 依赖于以下自动安装的包:

安装 SDK

若要首次安装必应广告 Python SDK ,请从 IDE 或命令行提示符运行以下命令。

pip.exe install msads

若要确认已安装必应广告 Python SDK,请运行以下命令。 输出列表中应显示 msads (<version>)

pip.exe list

如果已安装必应广告 Python SDK,可以运行此命令来获取最新位。

pip.exe install --upgrade msads

演练

安装必应广告 Python SDK 后,可以从 GitHub 下载示例,也可以按照演练 :Python 中的必应广告 API Web 应用程序或演练:Python 应用程序中的必应广告API 桌面应用程序 的应用程序之一进行操作。

使用 REST SDK

必应广告 Python SDK 使用 Pydantic 模型支持的 OpenAPI 生成的客户端类与 Microsoft 广告 REST API 通信。 通过 ServiceClient 实例与 API 交互,该实例会自动处理身份验证标头、终结点路由和方法调度。

设置 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、、BulkServiceReportingServiceCustomerManagementServiceCustomerBillingServiceAdInsightService

创建对象

直接从 中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 进行身份验证

错误处理

服务错误将作为 ApiExceptionopenapi_client 包引发。 异常公开 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}")

有关分析响应正文中返回的批处理错误的信息,请参阅 处理服务错误和异常

另请参阅

必应广告 API 客户端库
必应广告 API 代码示例
必应广告 API Web 服务地址
处理服务错误和异常
沙盒