Hãy tham gia cùng chúng tôi trực tiếp trên
Discord trên máy chủ Cộng đồng quảng cáo và đo lường của Google và trên
YouTube vào ngày 23 tháng 4 lúc 21:00 (giờ Việt Nam)! Chúng tôi sẽ thảo luận về các tính năng mới được thêm vào phiên bản 24 của API Google Ads.
Áp dụng ưu đãi
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Java
// Copyright 2026 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 com.google.ads.googleads.examples.incentives ;
import com.beust.jcommander.Parameter ;
import com.google.ads.googleads.examples.utils.ArgumentNames ;
import com.google.ads.googleads.examples.utils.CodeSampleParams ;
import com.google.ads.googleads.lib.GoogleAdsClient ;
import com.google.ads.googleads.v24.errors.GoogleAdsError ;
import com.google.ads.googleads.v24.errors.GoogleAdsException ;
import com.google.ads.googleads.v24.services.ApplyIncentiveRequest ;
import com.google.ads.googleads.v24.services.ApplyIncentiveResponse ;
import com.google.ads.googleads.v24.services.IncentiveServiceClient ;
import java.io.FileNotFoundException ;
import java.io.IOException ;
/**
* This example applies an incentive to a user's account.
*
* <p>This example is a no-op if the user already has an accepted incentive. If the user attempts to
* apply a new incentive, the response will simply return the existing incentive that has already
* been applied to the account.
*/
public class ApplyIncentive {
private static class ApplyIncentiveParams extends CodeSampleParams {
@Parameter (
names = ArgumentNames . CUSTOMER_ID ,
required = true ,
description = "The Google Ads customer ID." )
private Long customerId ;
@Parameter (
names = ArgumentNames . INCENTIVE_ID ,
required = true ,
description = "The ID of the incentive to apply." )
private Long incentiveId ;
@Parameter (
names = ArgumentNames . COUNTRY_CODE ,
required = true ,
description = "The country for the incentive to apply." )
private String countryCode = "US" ;
}
public static void main ( String [] args ) throws IOException {
ApplyIncentiveParams params = new ApplyIncentiveParams ();
if ( ! params . parseArguments ( args )) {
// Either pass the required parameters for this example on the command line, or insert them
// into the code here. See the parameter class definition above for more information.
params . customerId = Long . parseLong ( "INSERT_CUSTOMER_ID_HERE" );
params . incentiveId = Long . parseLong ( "INSERT_INCENTIVE_ID_HERE" );
}
GoogleAdsClient googleAdsClient = null ;
try {
googleAdsClient = GoogleAdsClient . newBuilder (). fromPropertiesFile (). build ();
} catch ( FileNotFoundException fnfe ) {
System . err . printf ( "Failed to load GoogleAdsClient configuration from file. Exception: %s%n" ,
fnfe );
System . exit ( 1 );
} catch ( IOException ioe ) {
System . err . printf ( "Failed to create GoogleAdsClient. Exception: %s%n" , ioe );
System . exit ( 1 );
}
try {
new ApplyIncentive (). runExample ( googleAdsClient , params . customerId , params . incentiveId ,
params . countryCode );
} catch ( GoogleAdsException gae ) {
// GoogleAdsException is the base class for most exceptions thrown by an API request.
// Instances of this exception have a message and a GoogleAdsFailure that contains a
// collection of GoogleAdsError instances that detail the underlying causes of the
// exception.
System . err . printf ( "Request ID %s failed due to GoogleAdsException. Underlying errors:%n" ,
gae . getRequestId ());
int i = 0 ;
for ( GoogleAdsError googleAdsError : gae . getGoogleAdsFailure (). getErrorsList ()) {
System . err . printf ( " Error %d: %s%n" , i ++ , googleAdsError );
}
System . exit ( 1 );
}
}
/**
* Runs the example.
*
* @param googleAdsClient the Google Ads API client.
* @param customerId the client customer ID.
* @param incentiveId the ID of the incentive to apply.
* @param countryCode the country of the incentive.
*/
private void runExample ( GoogleAdsClient googleAdsClient , long customerId , long incentiveId ,
String countryCode ) {
try ( IncentiveServiceClient incentiveServiceClient = googleAdsClient . getLatestVersion ()
. createIncentiveServiceClient ()) {
ApplyIncentiveRequest request = ApplyIncentiveRequest . newBuilder ()
. setCustomerId ( String . valueOf ( customerId ))
. setSelectedIncentiveId ( incentiveId )
. setCountryCode ( countryCode ). build ();
// Issues the request.
ApplyIncentiveResponse response = incentiveServiceClient . applyIncentive ( request );
// Processes the response.
System . out . println ( "====================================================================" );
System . out . printf ( "Applied incentive with coupon code '%s'.%n" , response . getCouponCode ());
System . out . printf ( "Incentive was created at '%s'.%n" , response . getCreationTime ());
System . out . println ( "====================================================================" );
}
}
}
C#
// Copyright 2026 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
//
// http://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.
using CommandLine ;
using Google.Ads.Gax.Examples ;
using Google.Ads.Gax.Lib ;
using Google.Ads.GoogleAds.Config ;
using Google.Ads.GoogleAds.Extensions.Config ;
using Google.Ads.GoogleAds.Lib ;
using Google.Ads.GoogleAds.V23.Errors ;
using Google.Ads.GoogleAds.V23.Services ;
using System ;
namespace Google.Ads.GoogleAds.Examples.V23
{
/// <summary>
/// This code example applies an incentive to a user's account.
/// </summary>
public class ApplyIncentive : ExampleBase
{
/// <summary>
/// Command line options for running the <see cref="FetchIncentives"/> example.
/// </summary>
public class Options : OptionsBase
{
/// <summary>
/// The customer ID for which the call is made.
/// </summary>
[Option("customerId", Required = true, HelpText =
"The customer ID for which the call is made.")]
public long CustomerId { get ; set ; }
/// <summary>
/// The ID of the incentive to apply.
/// </summary>
[Option("incentiveId", Required = true, HelpText =
"The ID of the incentive to apply.")]
public long IncentiveId { get ; set ; }
/// <summary>
/// The country for the incentive to apply.
/// </summary>
[Option("countryCode", Required = true, HelpText =
"The country for the incentive to apply.")]
public string CountryCode { get ; set ; }
}
/// <summary>
/// Main method, to run this code example as a standalone application.
/// </summary>
/// <param name="args">The command line arguments.</param>
public static void Main ( string [] args )
{
Options options = ExampleUtilities . ParseCommandLine<Options> ( args );
ApplyIncentive codeExample = new ApplyIncentive ();
Console . WriteLine ( codeExample . Description );
codeExample . Run ( new GoogleAdsClient (), options . CustomerId ,
options . IncentiveId , options . CountryCode );
}
/// <summary>
/// Returns a description about the code example.
/// </summary>
public override string Description = >
"This code example applies an incentive to a user's account." ;
/// <summary>
/// Runs the code example.
/// </summary>
/// <param name="client">The Google Ads client.</param>
/// <param name="customerId">The client customer ID.</param>
/// <param name="incentiveId">The ID of the incentive to apply.</param>
/// <param name="countryCode">The country for the returned incentive.</param>
public void Run ( GoogleAdsClient client , long customerId ,
long incentiveId , string countryCode )
{
IncentiveServiceClient incentiveService = client . GetService (
Services . V23 . IncentiveService );
ApplyIncentiveRequest request = new ApplyIncentiveRequest ()
{
CustomerId = customerId . ToString (),
SelectedIncentiveId = incentiveId ,
CountryCode = countryCode
};
try
{
ApplyIncentiveResponse response =
incentiveService . ApplyIncentive ( request );
Console . WriteLine ( "===========================================" );
Console . WriteLine ( $"Applied incentive with coupon code: {response.CouponCode}" );
Console . WriteLine ( $"Incentive was created at: {response.CreationTime}" );
Console . WriteLine ( "===========================================" );
} catch ( GoogleAdsException e )
{
Console . WriteLine ( "Failure:" );
Console . WriteLine ( $"Message: {e.Message}" );
Console . WriteLine ( $"Failure: {e.Failure}" );
Console . WriteLine ( $"Request ID: {e.RequestId}" );
throw ;
}
}
}
}
PHP
This example is not yet available in PHP; you can take a look at the other languages.
Python
#!/usr/bin/env python
# Copyright 2025 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.
"""This example applies an incentive to a user's account.
This example is a no-op if the user already has an accepted incentive. If the
user attempts to apply a new incentive, the response will simply return the
existing incentive that has already been applied to the account. Use the
fetch_incentives.py example to get the available incentives.
"""
import argparse
import sys
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
from google.ads.googleads.v24.services import (
ApplyIncentiveRequest ,
ApplyIncentiveResponse ,
)
from google.ads.googleads.v24.services.services.incentive_service.client import (
IncentiveServiceClient ,
)
def main (
client : GoogleAdsClient ,
customer_id : str ,
incentive_id : str ,
country_code : str ,
) - > None :
"""Applies an incentive for the ads customer.
Args:
client: An initialized GoogleAdsClient instance.
customer_id: The client customer ID.
country_code: The country code of the user.
incentive_id: The incentive ID to select.
"""
incentive_service : IncentiveServiceClient = client . get_service (
"IncentiveService"
)
apply_incentive_request : ApplyIncentiveRequest = client . get_type (
"ApplyIncentiveRequest"
)
apply_incentive_request . customer_id = customer_id
apply_incentive_request . selected_incentive_id = incentive_id
if country_code :
apply_incentive_request . country_code = country_code
response : ApplyIncentiveResponse = incentive_service . apply_incentive (
request = apply_incentive_request
)
print ( "Applied incentive." )
print ( f "Coupon Code: { response . coupon_code } " )
print ( f "Creation Time: { response . creation_time } " )
if __name__ == "__main__" :
parser = argparse . ArgumentParser (
description = "Applies an incentive for the ads customer."
)
# The following argument(s) should be provided to run the example.
parser . add_argument (
"-c" ,
"--customer_id" ,
type = str ,
required = True ,
help = "The Google Ads customer ID." ,
)
parser . add_argument (
"-i" ,
"--incentive_id" ,
type = int ,
required = True ,
help = "The incentive ID to select." ,
)
parser . add_argument (
"-k" ,
"--country_code" ,
type = str ,
required = True ,
help = "The country code of the user (e.g. 'US')." ,
)
args = parser . parse_args ()
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
googleads_client = GoogleAdsClient . load_from_storage ( version = "v24" )
try :
main (
googleads_client ,
args . customer_id ,
args . incentive_id ,
args . country_code ,
)
except GoogleAdsException as ex :
print (
f 'Request with ID " { ex . request_id } " failed with status '
f '" { ex . error . code () . name } " and includes the following errors:'
)
for error in ex . failure . errors :
print ( f ' \t Error with message " { error . message } ".' )
if error . location :
for field_path_element in error . location . field_path_elements :
print ( f " \t\t On field: { field_path_element . field_name } " )
sys . exit ( 1 )
Ruby
This example is not yet available in Ruby; you can take a look at the other languages.
Perl
This example is not yet available in Perl; you can take a look at the other languages.
curl
Lưu ý: Mặc dù không có mẫu mã REST trực tiếp cho bước này, nhưng bạn có thể thực hiện việc này bằng yêu cầu REST thủ công.
Hãy tham khảo tài liệu về giao diện REST của Google Ads API và các trang tham khảo dành riêng cho phương thức. Bạn cần phải tạo tải trọng JSON dựa trên các định nghĩa proto.
Các tài nguyên chính:
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0 . Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers . Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2026-04-22 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2026-04-22 UTC."],[],[]]