Thư viện ứng dụng

Thư viện ứng dụng Google Ads API cung cấp các chế độ xem cấp cao và các khối xây dựng cơ bản về chức năng của Google Ads API, giúp bạn dễ dàng phát triển ứng dụng một cách nhanh chóng. Hãy bắt đầu bằng một thư viện ứng dụng nếu bạn mới sử dụng API.

Bảng sau đây liệt kê các thư viện ứng dụng chính thức và đường liên kết đến hướng dẫn thiết lập, kho lưu trữ nguồn, gói và mã ví dụ:

Thư viện ứng dụng Hướng dẫn thiết lập và sử dụng Nguồn Hoạt động phân phối Ví dụ về mã
Java Cách sử dụng cơ bản, Cấu hình, Xác thực, Ghi nhật ký, Mặt nạ trường, Tên tài nguyên google-ads-java Maven, tar.gz, zip Xem trên GitHub
.NET Cách sử dụng cơ bản, Cấu hình, Xác thực, Ghi nhật ký, Mặt nạ trường, Tên tài nguyên google-ads-dotnet NuGet, tar.gz, zip Xem trên GitHub
PHP Cách sử dụng cơ bản, Cấu hình, Xác thực, Ghi nhật ký, Mặt nạ trường, Tên tài nguyên google-ads-php Composer, tar.gz, zip Xem trên GitHub
Python Cài đặt, Cấu hình, Xác thực, Ghi nhật ký, Mặt nạ trường, Tên tài nguyên google-ads-python PyPI, tar.gz, zip Xem trên GitHub
Ruby Cách sử dụng cơ bản, Cấu hình, Xác thực, Ghi nhật ký, Mặt nạ trường, Tên tài nguyên google-ads-ruby RubyGems, tar.gz, zip Xem trên GitHub
Perl Cách sử dụng cơ bản, Cấu hình, Xác thực, Ghi nhật ký, Mặt nạ trường, Tên tài nguyên google-ads-perl CPAN, tar.gz, zip Xem trên GitHub

Thư viện cộng đồng

Chúng tôi biết một số thư viện do cộng đồng nguồn mở duy trì. Chúng tôi duy trì danh sách này để giúp các nhà phát triển quan tâm tìm thấy họ. Chúng tôi không kiểm thử, đóng góp hoặc duy trì các thư viện này; bạn tự chịu rủi ro khi sử dụng. Nếu có thắc mắc, bạn nên liên hệ với chủ sở hữu của các dự án nguồn mở.

Nếu bạn biết một thư viện mà chúng tôi đã bỏ lỡ, hãy nhấp vào Gửi ý kiến phản hồi ở đầu trang và cho chúng tôi biết.

Các phiên bản API được hỗ trợ

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

Phiên bản thư viện ứng dụng tối thiểu được liệt kê là đủ cho bản phát hành chính của Google Ads API (chẳng hạn như phiên bản 26). Để xem phiên bản thư viện ứng dụng bắt buộc cho các bản phát hành nhỏ, hãy tham khảo Nhật ký thay đổi được liên kết.

Java

Nhật ký thay đổi

Thư viện ứng dụng cho Java
v26 Min: 48.0.0
Max: –
v25 Min: 44.0.0
Max: –
v24 Min: 43.0.0
Max: –
v23 Min: 42.0.0
Max: –

C#

Nhật ký thay đổi

Thư viện ứng dụng cho .NET
v26 Min: 27.5.0
Max: –
v25 Min: 26.1.0
Max: –
v24 Min: 25.3.0
Max: –
v23 Min: 25.1.0
Max: –

PHP

Nhật ký thay đổi

Thư viện ứng dụng cho PHP
v26 Min: 35.2.0
Max: –
v25 Min: 33.6.0
Max: –
v24 Min: 33.3.0
Max: –
v23 Min: 32.2.0
Max: –

Python

Nhật ký thay đổi

Thư viện ứng dụng cho Python
v26 Min: 34.0.0
Max: –
v25 Min: 31.2.0
Max: –
v24 Min: 30.1.0
Max: –
v23 Min: 29.2.0
Max: –

Ruby

Nhật ký thay đổi

Thư viện ứng dụng cho Ruby
v26 Min: 46.0.0
Max: –
v25 Min: 43.0.0
Max: –
v24 Min: 40.0.0
Max: –
v23 Min: 38.0.0
Max: –

Perl

Nhật ký thay đổi

Thư viện ứng dụng cho Perl
v26 Min: 36.0.0
Max: –
v25 Min: 33.0.0
Max: –
v24 Min: 32.0.0
Max: –
v23 Min: 31.0.0
Max: –

Cấu hình

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

Dưới đây là các biến môi trường tiêu chuẩn mà bạn có thể dùng để định cấu hình thư viện ứng dụng:

  • Thư viện ứng dụng
    • GOOGLE_ADS_CONFIGURATION_FILE_PATH: Đường dẫn đến tệp cấu hình (được đọc tự động khi tải từ tệp cấu hình mà không có đối số đường dẫn rõ ràng trong Java (fromPropertiesFile()), Perl (Client->new()), PHP (fromFile()), Python (load_from_storage() và cũng được load_from_env() kiểm tra) và Ruby (GoogleAdsClient.new); trong .NET, hãy tải biến này một cách rõ ràng bằng config.TryLoadFromEnvironmentFilePath hoặc tải tệp cấu hình bằng LoadFromSettingsJson, LoadFromConfigurationSection hoặc LoadFromConfigurationRoot).
  • OAuth2
    • Chế độ ứng dụng
      • GOOGLE_ADS_CLIENT_ID: Đặt giá trị này thành mã ứng dụng khách OAuth2 của bạn.
      • GOOGLE_ADS_CLIENT_SECRET: Đặt giá trị này thành khoá bí mật của ứng dụng khách 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. Chế độ cài đặt này là 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 đường dẫn của tệp khoá JSON OAuth2 (trong .NET, cũng đặt GOOGLE_ADS_OAUTH2_MODE thành SERVICE_ACCOUNT, vì OAuth2Mode mặc định là APPLICATION; trong các phiên bản PHP cũ hơn v32.1.0 hoặc khi sử dụng phạm vi tuỳ chỉnh, cũng đặt [OAUTH2] scopes trong google_ads_php.ini hoặc gọi withScopes(), vì fromEnvironmentVariables() không đọc phạm vi OAuth2 từ biến môi trường).
      • GOOGLE_ADS_IMPERSONATED_EMAIL: Đặt giá trị này thành địa chỉ email của tài khoản mà bạn đang mạo danh khi sử dụng tính năng uỷ quyền trên toàn miền của Google Workspace. Chế độ cài đặt này là không bắt buộc.
    • Chế độ Thông tin xác thực mặc định của ứng dụng
      • GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS: Đặt giá trị này thành true để xác thực bằng Thông tin xác thực mặc định của ứng dụng (ADC). Được hỗ trợ trong Java v41.1.0 trở lên, Python v28.3.0 trở lên và Ruby v36.1.0 trở lên (trong .NET v24.1.0 trở lên, LoadFromEnvironmentVariables() sẽ đọc biến USE_APPLICATION_DEFAULT_CREDENTIALS không có tiền tố, hoặc đặt UseApplicationDefaultCredentials = true trên GoogleAdsConfig; trong PHP, OAuth2TokenBuilder sẽ tự động quay lại ADC khi không có thông tin xác thực OAuth2 rõ ràng nào được đặt; Perl không hỗ trợ ADC).
  • Google Ads API
    • 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 đối với các phương thức cập nhật tài nguyên 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 Google Ads API). Đặt giá trị này thành 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 được chỉ định. Bạn nên đặt mã này mà 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.

Các 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ư tệp .bashrc hoặc .bash_profile nằm trong thư mục $HOME. Bạn cũng có thể xác định các biến này bằng dòng lệnh.

Dưới đây là một số bước cơ bản để xác định biến môi trường bằng tệp .bashrc thông qua 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.
source ~/.bashrc

Bạn cũng có thể thiết lập các biến môi trường trong phiên bản dòng lệnh ngay từ dòng lệnh:

export GOOGLE_ADS_CLIENT_ID=1234567890

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

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

Tìm nạp thực thể

GoogleAdsService.SearchStream thường được dùng để tìm nạp thực thể và kết quả được trả về dưới dạng một luồng hàng. Ngoài ra, bạn có thể sử dụng GoogleAdsService.Search để tìm nạp các thực thể qua một kết nối Internet không ổn định. GoogleAdsService.Search trả về kết quả dưới dạng kích thước trang cố định là 10.000 hàng mỗi trang.

Thư viện ứng dụng tự động triển khai tính năng phân trang khi bạn lặp lại kết quả để có thể tải xuống và xử lý tuần tự tất cả kết quả cùng một lúc.

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.V26.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: 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

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

curl

Ví dụ về mã

Xem các ví dụ về mã của một số hàm phổ biến trong Google Ads API.