以下各部分介绍了如何开始使用 Search Ads 360 Reporting API。
在 Google Cloud 上设置您的项目
要使用 Search Ads 360 Reporting API,您需要为自己的 Google Cloud 上的应用
创建 Google 项目
Google 项目可用作 Google Cloud 资源的资源容器。
- Go to the Google API Console.
- 单击创建项目 。
- 输入名称或接受生成的建议。
- 确认或编辑所有剩余字段。
- 点击创建 。
创建 OAuth2 凭据
Search Ads 360 Reporting API 使用 OAuth 2.0 进行身份验证 授权。OAuth 凭据可向 Google 识别您的应用,并允许您 生成用于管理 Search Ads 360 用户的 OAuth 令牌。
要在Google API Console创建OAuth 2.0凭据,请执行以下操作:
- Go to the Credentials page.
- 点击创建凭据> OAuth客户端ID
- 选择您的应用程序类型。
- 填写表格,然后点击创建 。
启用 Search Ads 360 Reporting API
要使用此 API,您必须为自己的 项目。
为您的项目启用API:
- Open the API Library中的Google API Console 。
- If prompted, select a project, or create a new one. API Library列出了所有可用的API,并按产品家族和受欢迎程度分组。
- 如果您要启用的API在列表中不可见,请使用搜索找到它,或单击其所属产品系列中的“ 查看全部 ”。
- 选择要启用的API,然后单击“ 启用”按钮。
- If prompted, enable billing.
- If prompted, read and accept the API's Terms of Service.
(可选)为您的项目启用结算功能
在 Google Cloud 中使用 Search Ads 360 Reporting API 无需付费。 不过,每个免费 Cloud 项目的总数有一个配额 。如果您已经达到限额,则可以注册新的 Google 账号,该账号将包含一个免费项目配额。
为您的项目启用计费:
- 访问Billing page 。
- 如果您没有有效的帐单帐户,请点击添加帐单帐户并按照说明创建帐户 。
启用项目的同意屏幕
要启用项目的同意屏幕:
- 在Consent Screen page中打开Google API Console 。
- If prompted, select a project, or create a new one.
- 填写表格,然后点击保存 。
创建、修改或查看重定向 URI
要创建,查看或编辑给定OAuth 2.0凭据的重定向URI,请执行以下操作:
- Go to the Credentials page.
- 在页面的OAuth 2.0客户端ID部分中,点击一个凭据。
- 查看或编辑重定向URI。
如果“凭据”页面上没有OAuth 2.0客户端ID部分,则您的项目没有OAuth凭据。要创建一个,点击创建凭证 。
下载客户端库
建议使用 Search Ads 360 Reporting API 客户端库 连接到 Search Ads 360 Reporting API。
下载用于开发用途的 Search Ads 360 Reporting API 客户端库 环境请按照如何设置 创建客户端库配置文件。在大多数情况下,您可以在迁移到新版 Search Ads 360 Reporting API 客户端库时重复使用现有配置。
一项重要变更是新的 login-customer-id
头文件。请参阅
登录客户 ID 标头
关于何时需要在配置中添加此变量的详细信息。
发出首次调用
配置完客户端库后,您可以 调用。
获取广告系列
在 IDE 中执行以下代码:
Java
// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package sample; import com.beust.jcommander.Parameter; import com.google.ads.searchads360.v0.lib.SearchAds360Client; import com.google.ads.searchads360.v0.services.SearchAds360Row; import com.google.ads.searchads360.v0.services.SearchAds360ServiceClient; import com.google.ads.searchads360.v0.services.SearchAds360ServiceClient.SearchPagedResponse; import com.google.ads.searchads360.v0.services.SearchSearchAds360Request; /** Get campaign details. */ public class GetCampaigns { private static final int PAGE_SIZE = 200; private static class GetCampaignsParams extends CodeSampleParams { @Parameter(names = "--customerId", required = true) private String customerId; @Parameter(names = "--loginCustomerId") private String loginCustomerId; } public static void main(String[] args) { GetCampaignsParams params = new GetCampaignsParams(); if (!params.parseArguments(args)) { // Optional: You may pass the loginCustomerId on the command line or specify a loginCustomerId // here (10 digits, no dashes). If neither are set, customerId will be used as // loginCustomerId. // params.loginCustomerId = Long.parseLong("INSERT_LOGIN_CUSTOMER_ID_HERE"); } final String loginCustomerId = params.loginCustomerId; final String customerId = params.customerId; try { // Creates a SearchAds360Client with the specified loginCustomerId. If there's // no loginCustomerId, customerId will be used instead. final SearchAds360Client searchAds360Client = SearchAds360Client.newBuilder() .setLoginCustomerId(loginCustomerId == null ? customerId : loginCustomerId) .fromPropertiesFile() .build(); // Creates the Search Ads 360 Service client. SearchAds360ServiceClient client = searchAds360Client.create(); new GetCampaigns().runExample(client, customerId); } catch (Exception exception) { System.err.printf("Failed with exception: %s%n", exception); exception.printStackTrace(); System.exit(1); } } private void runExample(SearchAds360ServiceClient searchAds360ServiceClient, String customerId) { // Creates a query that retrieves all campaigns under the customerId. String query = "SELECT campaign.name, campaign.id, campaign.status FROM campaign"; SearchSearchAds360Request request = SearchSearchAds360Request.newBuilder() .setCustomerId(customerId) .setQuery(query) .setPageSize(PAGE_SIZE) .build(); // Issues a search request. final SearchPagedResponse searchPagedResponse = searchAds360ServiceClient.search(request); for (SearchAds360Row element : searchPagedResponse.iterateAll()) { System.out.printf( "Campaign found with name '%s', ID %d, and status: %s.%n", element.getCampaign().getName(), element.getCampaign().getId(), element.getCampaign().getStatus()); } } }下载 GetCampaigns.java
Python
#!/usr/bin/env python # Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Retrieves campaigns for a customer using a pagination search request.""" import argparse import traceback from google.ads.searchads360.v0.services.types.search_ads360_service import SearchSearchAds360Request from util_searchads360 import SearchAds360Client _DEFAULT_PAGE_SIZE = 10000 def main(client, customer_id, page_size) -> None: search_ads_360_service = client.get_service() query = """ SELECT campaign.name, campaign.id, campaign.status FROM campaign""" request = SearchSearchAds360Request() request.customer_id = customer_id request.query = query request.page_size = page_size # Issues a search request. results = search_ads_360_service.search(request=request) for row in results: campaign = row.campaign print( f'campaign "{campaign.name}" has id {campaign.id} and status {campaign.status.name}' ) if __name__ == "__main__": # SearchAds360Client will read the search-ads-360.yaml configuration file in # the home directory if none is specified. search_ads_360_client = SearchAds360Client.load_from_file() parser = argparse.ArgumentParser( description=("Retrieves campaigns for a customer.")) # Arguments to provide to run the example. parser.add_argument( "-c", "--customer_id", type=str, required=True, help="The Search Ads 360 customer ID (10 digits, no dashes).", ) parser.add_argument( "-l", "--login_customer_id", type=str, required=False, help="The Search Ads 360 login customer ID (10 digits, no dashes).", ) args = parser.parse_args() search_ads_360_client.set_ids(args.customer_id, args.login_customer_id) try: main(search_ads_360_client, args.customer_id, _DEFAULT_PAGE_SIZE) except Exception: # pylint: disable=broad-except traceback.print_exc()下载 get_campaigns.py
控制台应输出您账号中的广告系列的列表。
使用 REST
如果您决定不使用客户端库,则需要了解如何使用 REST。
如果您将 REST 与旧版 Search Ads 360 API 配合使用,您的凭据仍将保留 与新版 Search Ads 360 Reporting API 搭配使用。 在 REST 参考文档部分查找新端点和其他详细信息。
了解详情
详细了解 Search Ads 360 Reporting API