Thư viện ứng dụng

Thư viện khách hàng của chúng tôi cung cấp chế độ xem cấp cao và các thành phần cơ bản của Chức năng của API Google Ads, giúp bạn phát triển ứng dụng một cách nhanh chóng và dễ dàng. Bạn nên bắt đầu bằng một lệnh nếu bạn mới sử dụng API.

Thư viện ứng dụng Nguồn Hoạt động phân phối Ví dụ về mã
Java google-ads-java Maven, tar.gz Xem trên GitHub
.NET google-ads-dotnet nuget, tar.gz, zip Xem trên GitHub
PHP google-ads-php tar.gz Xem trên GitHub
Python google-ads-python tar.gz, zip Xem trên GitHub
Hồng ngọc google-ads-ruby gem, tar.gz, zip Xem trên GitHub
Perl google-ads-perl tar.gz, zip Xem trên GitHub

Phiên bản API được hỗ trợ

Bảng này cho biết những thư viện ứng dụng hoạt động với phiên bản API nào.

Java

Thư viện ứng dụng dành cho Java
v17
32.0.0 Min: Max:
v16
30.0.0 Min: Max:
v15
28.0.0 Min: Max:

C#

Thư viện ứng dụng cho .NET
v17
20.1.0 Min: Max:
v16
18.1.0 Min: Max:
v15
17.1.0 Min: Max:

PHP

Thư viện ứng dụng cho PHP
v17
23.1.0 Min: Max:
v16
22.1.0 Min: Max:
v15
21.1.0 Min: Max:

Python

Thư viện ứng dụng cho Python
v17
24.1.0 Min: Max:
v16
23.1.0 Min: Max:
v15
22.1.0 Min: Max:

Ruby

Thư viện ứng dụng cho Ruby
v17
29.0.0 Min: Max:
v16
27.0.0 Min: Max:
v15
25.0.0 Min: Max:

Perl

Thư viện ứng dụng cho Perl
v17
23.0.0 Min: Max:
v16
21.0.0 Min: Max:
v15
19.0.0 Min: Max:

Cấu hình

Mỗi thư viện ứng dụng Ads API cung cấp nhiều chế độ cài đặt cấu hình và phương thức tải mà bạn có thể sử dụng để tuỳ chỉnh hành vi của phương thức đó.

Dưới đây là các biến môi trường chung cho tất cả thư viện ứng dụng và có thể tải để đặt chế độ cài đặt cấu hình:

  • Thư viện ứng dụng
    • GOOGLE_ADS_CONFIGURATION_FILE_PATH: Đường dẫn đến tệp cấu hình.
  • OAuth2
    • Chế độ ứng dụng
      • GOOGLE_ADS_CLIENT_ID : Đặt giá trị này thành mã ứng dụng khách OAuth2.
      • GOOGLE_ADS_CLIENT_SECRET : Đặt giá trị này thành mật khẩu ứng dụng OAuth2.
      • GOOGLE_ADS_REFRESH_TOKEN : Đặt giá trị này thành mã làm mới OAuth2 được tạo trước nếu bạn muốn sử dụng lại mã thông báo OAuth2. Đây là chế độ cài đặt không bắt buộc.
    • Chế độ tài khoản dịch vụ
      • GOOGLE_ADS_JSON_KEY_FILE_PATH : Đặt giá trị này thành cấu hình JSON của OAuth2 đường dẫn tệp.
      • GOOGLE_ADS_IMPERSONATED_EMAIL : Đặt giá trị này thành địa chỉ email của bạn đang mạo danh.
  • API Google Ads
    • GOOGLE_ADS_DEVELOPER_TOKEN : Đặt giá trị này thành mã của nhà phát triển.
    • GOOGLE_ADS_LOGIN_CUSTOMER_ID : Đây là mã khách hàng của khách hàng được uỷ quyền sử dụng trong yêu cầu không có dấu gạch nối (-).
    • GOOGLE_ADS_LINKED_CUSTOMER_ID : Tiêu đề này chỉ bắt buộc cho các phương thức cập nhật của một pháp nhân khi được cấp quyền thông qua Tài khoản được liên kết trong Giao diện người dùng Google Ads (tài nguyên AccountLink trong API Google Ads). Đặt giá trị này vào mã khách hàng của nhà cung cấp dữ liệu để cập nhật tài nguyên của mã khách hàng đã chỉ định. Giá trị này phải được đặt không có dấu gạch nối (-). Để tìm hiểu thêm về Tài khoản được liên kết, hãy truy cập vào Trung tâm trợ giúp.

Biến môi trường thường được xác định trong tệp cấu hình bash, chẳng hạn như dưới dạng tệp .bashrc hoặc .bash_profile nằm trong thư mục $HOME. Chúng cũng có thể được xác định bằng dòng lệnh.

Dưới đây là một số bước cơ bản để xác định một biến môi trường bằng .bashrc bằng cửa sổ dòng lệnh:

# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc

# Update your bash environment to use the most recently updated
# version of your .bashrc file.
src ~/.bashrc

Bạn cũng có thể thiết lập các biến môi trường trong thực thể thiết bị đầu cuối ngay trên dòng lệnh:

export GOOGLE_ADS_CLIENT_ID=1234567890

Một cách khác là đặt các biến môi trường khi gọi lệnh sử dụng chúng:

GOOGLE_ADS_CLIENT_ID=1234567890 php /path/to/script/that/uses/envvar.php

Đánh số trang tìm kiếm

GoogleAdsService.Search thường là được dùng trong các ứng dụng tương tác hiển thị các trang kết quả.

Thư viện ứng dụng của chúng tôi tự động triển khai đánh số trang khi bạn lặp lại kết quả để bạn có thể tải xuống tuần tự và xử lý tất cả cùng lúc, ví dụ:

Java

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#

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the GoogleAdsService.
    GoogleAdsServiceClient googleAdsService = client.GetService(
        Services.V17.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

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

def main(client, customer_id):
    ga_service = client.get_service("GoogleAdsService")

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

    # Issues a search request using streaming.
    stream = ga_service.search_stream(customer_id=customer_id, query=query)

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

Ruby

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

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::V17::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;
}
      

Tuỳ thuộc vào trường hợp sử dụng, bạn có thể cần:

  • Tối ưu hoá số trang được tìm nạp.
  • Tối ưu hoá lượng kết quả được lưu trữ tại một thời điểm.
  • Tải xuống và xử lý các trang kết quả theo thứ tự cụ thể.

Có thể thực hiện việc này bằng cách lưu trữ mã thông báo trang thay vì kết quả. Điều này sẽ thêm độ phức tạp của mã.

Ví dụ về mã

Xem các đoạn mã ví dụ của chúng tôi về một số hàm phổ biến trong API Google Ads.