以下各節說明如何開始使用 Search Ads 360 報表 API。
在 Google Cloud 中設定專案
如要使用 Search Ads 360 報表 API,您需要在 Google Cloud 上為應用程式建立專案。
建立 Google 專案
Google 專案是 Google Cloud 資源的資源容器。
- Go to the Google API Console.
- 按一下 [Create Project]。
- 輸入名稱或接受系統產生的建議。
- 確認或編輯其餘欄位。
- 點選「建立」。
建立 OAuth2 憑證
Search Ads 360 Reporting API 使用 OAuth 2.0 進行驗證及授權。OAuth 憑證可向 Google 識別您的應用程式,並讓您產生 OAuth 權杖,以管理 Search Ads 360 使用者。
如要在 Google API Console中建立 OAuth 2.0 憑證,請按照下列步驟操作:
- Go to the Clients page.
- 按一下「建立憑證」>「OAuth 用戶端 ID」
- 選取申請類型。
- 填寫表單,然後按一下「建立」。
啟用 Search Ads 360 Reporting API
如要使用 API,請在 Google API 控制台中,為專案啟用 Search Ads 360 Reporting API。
如要為專案啟用 API,請按照下列步驟操作:
- Open the API Library 。 Google API Console
- If prompted, select a project, or create a new one. 「API 程式庫」 API Library 會列出所有可用的 API,並按照產品系列及熱門程度分組。
- 如果清單裡找不到您想啟用的 API,請使用搜尋功能,或點選所屬產品系列的「查看全部」。
- 選取要啟用的 API,然後按一下「Enable」按鈕。
- 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。
- 如果沒有有效的帳單帳戶,請按一下「新增帳單帳戶」並按照指示建立帳戶。
啟用專案的同意畫面
如要啟用專案的同意畫面,請按照下列步驟操作:
- 開啟 Google Cloud Console中的 Branding page 。
- If prompted, select a project, or create a new one.
- 填寫表單,然後按一下「儲存」。
建立、編輯或查看重新導向 URI
如要為特定 OAuth 2.0 憑證建立、查看或編輯重新導向 URI,請按照下列步驟操作:
- Go to the Clients page.
- 按一下所需客戶。
- 查看或編輯重新導向 URI。
如果「用戶端」頁面未列出任何用戶端,表示專案沒有 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()); } } }
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()
控制台應會列印帳戶中的廣告活動清單。
使用 REST
如果您決定不使用用戶端程式庫,就必須瞭解如何使用 REST。
如果您使用 REST 搭配舊版 Search Ads 360 API,憑證仍可搭配新版 Search Ads 360 Reporting API 使用。在 REST 參考資料部分中,找出新端點和其他詳細資料。
瞭解詳情
進一步瞭解 Search Ads 360 Reporting API