快速入門

這份快速入門指南可協助您對 Google Ads API 發出第一個 API 呼叫。

核心概念

  • Google Cloud 專案:Google Cloud 專案是建立、啟用及使用所有 Google 服務的基本要件,包括管理 API 和 OAuth 2.0 API 憑證。您可以透過 Google Cloud 控制台建立服務帳戶。
  • API 存取層級:您的 Google Cloud 雲端專案的 API 存取層級會控管您每天可發出的 API 呼叫次數,以及可發出 API 呼叫的環境。專案的 API 存取層級會列在專案的 Google Ads API 總覽頁面。
  • Google Ads 管理員帳戶:Google Ads 管理員帳戶可用來管理其他 Google Ads 帳戶,包括 Google Ads 客戶帳戶或其他 Google Ads 管理員帳戶。
  • Google Ads 客戶帳戶:用於放送廣告的 Google Ads 帳戶,您想透過 API 呼叫指定這個帳戶。
  • 用戶端客戶 ID:用於識別 Google Ads 用戶端帳戶的 10 位數號碼。如果您是從 Google Ads 使用者介面複製這個 ID,請務必移除連字號。
  • OAuth 2.0:OAuth 2.0 是業界標準的授權通訊協定,所有 Google API 都會使用這項通訊協定。您需要服務帳戶和金鑰,才能產生 OAuth 2.0 憑證來發出 API 呼叫。
  • 服務帳戶:一種特殊的 Google 帳戶,屬於您的應用程式,而非個別使用者。用來向 Google Ads API 驗證應用程式。您必須有 Google Cloud 專案,才能取得服務帳戶。
  • 服務帳戶金鑰:包含服務帳戶私密金鑰的 JSON 應用程式憑證檔案。用來產生 OAuth 2.0 憑證,在發出 Google Ads API 呼叫時驗證服務帳戶。您必須具備服務帳戶,才能取得服務帳戶金鑰。

必要條件

如要發出 Google Ads API 呼叫,請完成下列步驟。

設定雲端專案,以存取 Google Ads API

Google Cloud 專案用於管理 Google API 和 OAuth 2.0 API 憑證。如要查看現有的 Google Cloud 專案或建立專案,請前往 Google Cloud 控制台。

首先,請在專案中啟用 Google Ads API:

啟用 Google Ads API

接著,請前往 Google Ads API 總覽頁面。頁面會顯示目前的 API 存取層級。如果目前的 API 存取層級為「測試」,請展開「提高存取層級」部分。按照操作說明申請「探索者」存取層級。

完成申請後,Google 通常會自動審查並將帳戶升級為探索者。如果沒有「探索者」存取權,請別擔心,本指南會在設定 Google Ads 客戶帳戶時,提供適當的指示。

建立服務帳戶

您需要服務帳戶和服務帳戶金鑰,才能發出 API 呼叫。如果您已使用其他 Google API,並建立 OAuth 2.0 服務帳戶和金鑰,可以略過這個步驟,重複使用現有憑證。

如何建立服務帳戶和金鑰

  1. 在 Google Cloud 控制台中,依序前往「選單」 >「IAM 與管理」 >「服務帳戶」。

    前往「Service Accounts」(服務帳戶)

  2. 選取服務帳戶。
  3. 依序點選「金鑰」>「新增金鑰」 >「建立新的金鑰」。
  4. 選取「JSON」,然後按一下「建立」。

    接著,系統就會為您產生一對新的公開/私密金鑰,並以新檔案的形式下載至您的電腦中。將下載的 JSON 檔案儲存為目前使用的目錄中的 credentials.json。這個檔案是這組金鑰的唯一副本。請勿將 credentials.json 提交至版本管控系統 (例如,將其新增至 .gitignore 檔案)。

  5. 按一下 [關閉]。

首先,請找出您要對哪個 Google Ads 帳戶發出 API 呼叫。您可呼叫 API 的帳戶類型,取決於 Google Cloud 專案的 API 存取層級。請查看 Google Ads API 總覽頁面,瞭解您的 API 存取層級。

探索者、基本和標準存取層級

您可以撥打 Google Ads 製作帳戶電話。不過,您可以按照「測試存取權」分頁中的指示建立 Google Ads 測試帳戶 (如有需要)。

測試存取權

您的 Google Cloud 雲端專案無法用於呼叫 Google Ads 正式版帳戶的 API。您只能對 Google Ads 測試帳戶發出 API 呼叫。

如何建立 Google Ads 測試帳戶

請按照下列操作說明建立 Google Ads 測試管理員帳戶,以及該帳戶底下的 Google Ads 測試廣告主帳戶。

  1. 按一下藍色按鈕,建立 Google Ads 測試管理員帳戶。 如果系統提示,請使用未連結至 Google Ads 製作管理員帳戶的 Google 帳戶登入。如果沒有,請使用該頁面的「建立帳戶」按鈕建立新的 Google 帳戶。

    建立 Google Ads 測試管理員帳戶

  2. 在 Google Ads 測試管理員帳戶中,建立 Google Ads 測試客戶帳戶:依序點按「帳戶」>「」>「建立新帳戶」,然後填寫表單。透過 Google Ads 測試管理員帳戶建立的任何 Google Ads 帳戶,都會自動成為 Google Ads 測試帳戶。
  3. 視需要從 Google Ads 頁面,在 Google Ads 測試版客戶帳戶下建立幾個廣告活動。

如要對 Google Ads 客戶發出 API 呼叫,您必須授予服務帳戶 Google Ads 客戶帳戶的存取權和適當權限。如要這麼做,您需要具備客戶帳戶的管理員存取權。

如何授予服務帳戶 Google Ads 帳戶存取權

  1. 請先以管理員身分登入 Google Ads 帳戶。
  2. 前往「管理」>「存取權和安全性」。
  3. 按一下「使用者」分頁標籤下方的 按鈕。
    Google Ads「存取權和安全性」頁面,顯示「新增使用者」按鈕
  4. 在「電子郵件」輸入方塊中輸入服務帳戶電子郵件地址。 選取適當的帳戶存取層級,然後按一下「新增帳戶」按鈕。請注意,服務帳戶不支援「電子郵件」存取層級。
    新增服務帳戶電子郵件地址並選取存取層級的對話方塊
  5. 服務帳戶已獲得存取權。
    「存取權和安全性」頁面,顯示具有存取權的服務帳戶
  6. [選用] 初始設定期間,您無法將管理員存取權授予服務帳戶。如果 API 呼叫需要管理員存取權,您可以按照下列步驟升級存取權。
    1. 在「存取層級」欄中,按一下服務帳戶存取層級旁的下拉式箭頭。
    2. 從下拉式清單選取「管理員」。

下載工具和用戶端程式庫

您可以選擇下載用戶端程式庫或 HTTP 用戶端,視您要如何發出 API 呼叫而定。

使用用戶端程式庫

下載並安裝所選的用戶端程式庫。

使用 HTTP 用戶端 (REST)

curl

下載並安裝 curl,這個指令列工具可透過網址傳輸資料。

Google Cloud 指令列介面

按照 Google Cloud CLI 安裝指南安裝 gcloud CLI。

本指南其餘部分的說明已通過驗證,可搭配下列版本的 gcloud 工具使用。由於應用程式行為或指令列選項有所差異,可能無法搭配舊版使用。

:~$ gcloud version
Google Cloud SDK 492.0.0
alpha 2024.09.06
beta 2024.09.06
bq 2.1.8
bundled-python3-unix 3.11.9
core 2024.09.06
enterprise-certificate-proxy 0.3.2
gcloud-crc32c 1.0.0
gsutil 5.30

發出 API 呼叫

選取偏好的用戶端,查看如何發出 API 呼叫的說明:

Java

用戶端程式庫構件會發布至 Maven Central 存放區。

如要管理依附元件版本及避免衝突,請參閱 Google Ads API 物料清單 (BOM) 指南。

如果您未使用 BOM,請使用下列任一建構工具,直接將用戶端程式庫新增至專案:

Maven:在 pom.xml 檔案中新增下列依附元件:

<dependency>
  <groupId>com.google.api-ads</groupId>
  <artifactId>google-ads</artifactId>
  <version>46.1.0</version>
</dependency>

Gradle:將下列依附元件新增至 build.gradle 檔案:

implementation 'com.google.api-ads:google-ads:46.1.0'

在主目錄 (Linux 和 macOS 為 ~/ads.properties,Windows 為 %USERPROFILE%\ads.properties) 中建立 ads.properties 檔案,並加入以下內容:

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

執行 API 要求前,請先建立 GoogleAdsClient 執行個體。根據預設,fromPropertiesFile() 會從主目錄中的 ads.properties 檔案載入憑證:

GoogleAdsClient googleAdsClient;
try {
  googleAdsClient = GoogleAdsClient.newBuilder().fromPropertiesFile().build();
} catch (IOException e) {
  System.err.printf("Failed to create GoogleAdsClient: %s%n", e);
  throw new RuntimeException("Initialization failed", e);
}

接著,使用 GoogleAdsService.SearchStream 執行廣告活動報表,有效率地串流處理大型結果集,並擷取帳戶中的廣告活動:

    private void runExample(GoogleAdsClient googleAdsClient, long customerId) {
  try (GoogleAdsServiceClient googleAdsServiceClient =
      googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
    String query = "SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id";
    // Constructs the SearchGoogleAdsStreamRequest.
    SearchGoogleAdsStreamRequest request =
        SearchGoogleAdsStreamRequest.newBuilder()
            .setCustomerId(Long.toString(customerId))
            .setQuery(query)
            .build();

    // Creates and issues a search Google Ads stream request that will retrieve all campaigns.
    ServerStream<SearchGoogleAdsStreamResponse> stream =
        googleAdsServiceClient.searchStreamCallable().call(request);

    // Iterates through and prints all of the results in the stream response.
    for (SearchGoogleAdsStreamResponse response : stream) {
      for (GoogleAdsRow googleAdsRow : response.getResultsList()) {
        System.out.printf(
            "Campaign with ID %d and name '%s' was found.%n",
            googleAdsRow.getCampaign().getId(), googleAdsRow.getCampaign().getName());
      }
    }
  }
}

C#

用戶端程式庫套件會發布至 NuGet.org 存放區。首先,請將 NuGet 套件參照新增至 Google.Ads.GoogleAds 套件:

dotnet add package Google.Ads.GoogleAds --version 27.4.0

如要發出 API 呼叫,請從設定 (例如 appsettings.json、環境變數或自訂設定) 建立 GoogleAdsConfig 物件,然後傳遞該物件來初始化 GoogleAdsClient 執行個體:

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "JSON_KEY_FILE_PATH",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);

接著,使用 GoogleAdsService.SearchStream 方法擷取帳戶中的廣告活動,然後執行廣告活動報表。本指南未涵蓋報表的詳細資訊。

    public void Run(GoogleAdsClient client, long customerId)
{
    // Get the GoogleAdsService.
    GoogleAdsServiceClient googleAdsService = client.GetService(
        Services.V25.GoogleAdsService);

    // Create a query that will retrieve all campaigns.
    string query = @"SELECT
                    campaign.id,
                    campaign.name,
                    campaign.network_settings.target_content_network
                FROM campaign
                ORDER BY campaign.id";

    try
    {
        // Issue a search request.
        googleAdsService.SearchStream(customerId.ToString(), query,
            delegate (SearchGoogleAdsStreamResponse resp)
            {
                foreach (GoogleAdsRow googleAdsRow in resp.Results)
                {
                    Console.WriteLine("Campaign with ID {0} and name '{1}' was found.",
                        googleAdsRow.Campaign.Id, googleAdsRow.Campaign.Name);
                }
            }
        );
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}

PHP

用戶端程式庫套件會發布至 Packagist 存放區。請確認您已安裝相容的 PHP 版本和 Composer,然後切換至專案的根目錄,並執行下列指令,在專案的 vendor/ 目錄中安裝程式庫及其依附元件:

composer require googleads/google-ads-php:35.1.0

從 GitHub 存放區複製 google_ads_php.ini 檔案,將其儲存在主目錄或專案的根目錄中,然後修改檔案以納入您的憑證:

[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"

[OAUTH2]
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

使用 google_ads_php.ini 設定檔建立 GoogleAdsClient 例項:

use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\Lib\V25\GoogleAdsClientBuilder;

$oauth2Credential = (new OAuth2TokenBuilder())
    ->fromFile('/path/to/google_ads_php.ini')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->fromFile('/path/to/google_ads_php.ini')
    ->withOAuth2Credential($oauth2Credential)
    ->build();

接著,使用 GoogleAdsService.SearchStream 方法執行廣告活動報表,以擷取帳戶中的廣告活動:

    public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
{
    $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
    // Creates a query that retrieves all campaigns.
    $query = 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id';
    // Issues a search stream request.
    /** @var GoogleAdsServerStreamDecorator $stream */
    $stream = $googleAdsServiceClient->searchStream(
        SearchGoogleAdsStreamRequest::build($customerId, $query)
    );

    // Iterates over all rows in all messages and prints the requested field values for
    // the campaign in each row.
    foreach ($stream->iterateAllElements() as $googleAdsRow) {
        /** @var GoogleAdsRow $googleAdsRow */
        printf(
            "Campaign with ID %d and name '%s' was found.%s",
            $googleAdsRow->getCampaign()->getId(),
            $googleAdsRow->getCampaign()->getName(),
            PHP_EOL
        );
    }
}

Python

適用於 Python 的 Google Ads API 用戶端程式庫發布於 PyPI。請確認您已安裝支援的 Python 版本,然後使用 pip 安裝程式庫:

python -m pip install google-ads==33.0.0

如要驗證 API 呼叫,請設定 google-ads.yaml 檔案:

  1. 從 GitHub 存放區下載範例 google-ads.yaml 檔案副本。
  2. 將檔案儲存在主目錄 (~/google-ads.yaml) 或自訂路徑。
  3. 開啟 google-ads.yaml 並更新,加入您的憑證:

    login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
    json_key_file_path: JSON_KEY_FILE_PATH
    

    請先設定記錄功能,再初始化用戶端,這樣程式庫就能擷取任何初始化或設定警告。下列範例會將程式庫的記錄器設定為將 INFO 記錄輸出至標準輸出 (stdout):

import logging
import sys

logger = logging.getLogger("google.ads.googleads.client")
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler(sys.stdout))

呼叫 GoogleAdsClient.load_from_storage 方法並傳遞 google-ads.yaml 檔案的路徑,即可建立 GoogleAdsClient 例項:

from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")

如果省略路徑引數,load_from_storage() 預設會在主目錄 (~/google-ads.yaml) 中搜尋設定檔。

接著,使用 GoogleAdsService.SearchStream 方法擷取帳戶中的廣告活動,然後執行廣告活動報表:

    def main(client: GoogleAdsClient, customer_id: str) -> None:
    ga_service: GoogleAdsServiceClient = client.get_service("GoogleAdsService")

    query: str = """
        SELECT
          campaign.id,
          campaign.name
        FROM campaign
        ORDER BY campaign.id"""

    # Issues a search request using streaming.
    stream: Iterator[SearchGoogleAdsStreamResponse] = ga_service.search_stream(
        customer_id=customer_id, query=query
    )

    for batch in stream:
        rows: List[GoogleAdsRow] = batch.results
        for row in rows:
            print(
                f"Campaign with ID {row.campaign.id} and name "
                f'"{row.campaign.name}" was found.'
            )

小茹

用戶端程式庫的 Ruby Gem 會發布至 RubyGems。請確認您已安裝支援的 Ruby 版本,並使用 Bundler 安裝程式庫:

  1. 將 Gem 新增至應用程式的 Gemfile:

    gem 'google-ads-googleads', '~> 45.1.0'
    
  2. 執行下列指令來安裝 Gem:

    bundle install

如要設定憑證,請按照下列步驟操作:

  1. 從 GitHub 存放區複製範例 google_ads_config.rb 檔案。
  2. 將檔案儲存在專案的根目錄或主目錄 (~)。
  3. 開啟 google_ads_config.rb,然後將預留位置值替換成您的 Google Ads API 憑證:

    Google::Ads::GoogleAds::Config.new do |c|
      c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
      c.keyfile = 'JSON_KEY_FILE_PATH'
    end
    

    傳遞設定檔 (google_ads_config.rb) 的路徑,建立 GoogleAdsClient 執行個體:

client = Google::Ads::GoogleAds::GoogleAdsClient.new(
  'path/to/google_ads_config.rb'
)

接著,使用 GoogleAdsService.SearchStream 方法擷取帳戶中的廣告活動,然後執行廣告活動報表:

    def get_campaigns(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new

  responses = client.service.google_ads.search_stream(
    customer_id: customer_id,
    query: 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id',
  )

  responses.each do |response|
    response.results.each do |row|
      puts "Campaign with ID #{row.campaign.id} and name '#{row.campaign.name}' was found."
    end
  end
end

Perl

Perl 用戶端程式庫是在 CPAN 上發布,需要 Perl 5.28 以上版本和 cpan 或 cpanm 套件管理工具。

  1. 在所選目錄中複製 google-ads-perl 存放區:

    git clone https://github.com/googleads/google-ads-perl.git
  2. 切換至 google-ads-perl 目錄,然後執行下列指令,安裝必要的依附元件並建構程式庫:

    cd google-ads-perl
    cpan install Module::Build
    perl Build.PL
    perl Build installdeps
    perl Build
    perl Build install

如要設定憑證,請按照下列步驟操作:

  1. 將 GitHub 存放區中的範例 googleads.properties 設定檔複製到主目錄 (~/googleads.properties):

    cp googleads.properties ~/googleads.properties
  2. 編輯 ~/googleads.properties,加入您的憑證:

    jsonKeyFilePath=JSON_KEY_FILE_PATH
    loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
    

    傳遞已設定的 googleads.properties 檔案路徑 (例如 ~/googleads.properties),建立 Client 執行個體:

my $api_client = Google::Ads::GoogleAds::Client->new({
  properties_file => "/path/to/googleads.properties"
});

接著,使用 GoogleAdsService.SearchStream 方法擷取帳戶中的廣告活動,然後執行廣告活動報表:

    sub get_campaigns {
  my ($api_client, $customer_id) = @_;

  # Create a search Google Ads stream request that will retrieve all campaigns.
  my $search_stream_request =
    Google::Ads::GoogleAds::V25::Services::GoogleAdsService::SearchGoogleAdsStreamRequest
    ->new({
      customerId => $customer_id,
      query      =>
        "SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id"
    });

  # Get the GoogleAdsService.
  my $google_ads_service = $api_client->GoogleAdsService();

  my $search_stream_handler =
    Google::Ads::GoogleAds::Utils::SearchStreamHandler->new({
      service => $google_ads_service,
      request => $search_stream_request
    });

  # Issue a search request and process the stream response to print the requested
  # field values for the campaign in each row.
  $search_stream_handler->process_contents(
    sub {
      my $google_ads_row = shift;
      printf "Campaign with ID %d and name '%s' was found.\n",
        $google_ads_row->{campaign}{id}, $google_ads_row->{campaign}{name};
    });

  return 1;
}

執行時,指令碼會串流處理相符的資料列,並列印帳戶中每個廣告活動的 ID 和名稱。

curl

首先,請在 gcloud CLI 中將服務帳戶設為有效憑證。

gcloud auth login --cred-file=JSON_KEY_FILE_PATH

接著,擷取 Google Ads API 的 OAuth 2.0 存取權杖。

gcloud auth \
  print-access-token \
  --scopes='https://www.googleapis.com/auth/adwords'

建立名為 query.json 的檔案,內含 Google Ads 查詢語言 (GAQL) 要求:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}

使用 GoogleAdsService.SearchStream 方法執行廣告活動報表,以擷取帳戶中的廣告活動:

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

如果在發出第一個呼叫時發生錯誤,請參閱「處理 API 錯誤」一文,瞭解如何排解問題。