若要开始使用 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 依赖于以下自动安装的包:
- pydantic (>=2.0.0) — 所有 API 对象的类型化数据模型
- 请求 - HTTP 传输
- typing-extensions (>=4.0.0)
安装 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、、BulkService、ReportingServiceCustomerManagementService、 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 进行身份验证。
错误处理
服务错误将作为 ApiException 从 openapi_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}")
有关分析响应正文中返回的批处理错误的信息,请参阅 处理服务错误和异常。