帳戶預算可定義支出上限、開始時間和結束時間等預算屬性,控管帳戶在特定期間的支出。這些設定必須指向帳戶的其中一項帳單設定,指出要向哪個特定付款帳戶收費。您可以傳送 AccountBudgetProposal 物件,在 Google Ads API 中建立、更新及移除 AccountBudget。
AccountBudget 物件代表套用提案的最終結果。提案獲准後,系統會根據提案內容 (如有任何調整) 建立新的帳戶預算,或更新現有預算。這取決於要求中指定的 proposal_type。
AccountBudgetProposalType |
說明 |
|---|---|
CREATE |
建立新的帳戶預算,必須先獲得核准才能使用。 |
UPDATE |
修改現有帳戶預算。 |
END |
將帳戶預算的結束時間設為目前時間。 |
REMOVE |
在帳戶預算開始時間前移除。 |
以下各節說明每種提案類型的行為。
建立帳戶預算提案
建立新的帳戶預算後,您就能控管客戶的支出行為。使用 AccountBudgetProposalService 建立新的 AccountBudgetProposal。您應設定 proposal_type 為 CREATE,指定應建立新預算。如需其他作業,請參閱本指南的管理部分。
請務必使用您具有寫入權限的付款帳戶,設定帳單。詳情請參閱帳單設定指南。
以下範例說明如何建立新的預算提案。
Java
private void runExample(GoogleAdsClient googleAdsClient, long customerId, long billingSetupId) { // Creates an AccountBudgetProposal. This will be reviewed offline by Google Ads, and if // approved will become an AccountBudget. AccountBudgetProposal proposal = AccountBudgetProposal.newBuilder() .setBillingSetup(ResourceNames.billingSetup(customerId, billingSetupId)) .setProposalType(AccountBudgetProposalType.CREATE) .setProposedName("Account Budget (example)") // Specifies the account budget starts immediately. .setProposedStartTimeType(TimeType.NOW) // Alternatively you can specify a specific start time. Refer to the // AccountBudgetProposal // resource documentation for allowed formats. // // .setProposedStartDateTime("2020-01-02 03:04:05") // Specifies that the budget runs forever. .setProposedEndTimeType(TimeType.FOREVER) // Alternatively you can specify a specific end time. Allowed formats are as above. // .setProposedEndDateTime("2021-02-03 04:05:06") // Optional: sets notes for the budget. These are free text and do not effect budget // delivery. // .setProposedNotes("Received prepayment of $0.01") // Sets the spending limit to 0.01, measured in the Google Ads account currency. .setProposedSpendingLimitMicros(10_000) // Optional: sets PO number for record keeping. This value is at the user's // discretion, and has no effect on Google Billing & Payments. // .setProposedPurchaseOrderNumber("PO number 12345") .build(); // Creates an operation which will add the new AccountBudgetProposal. AccountBudgetProposalOperation operation = AccountBudgetProposalOperation.newBuilder().setCreate(proposal).build(); try (AccountBudgetProposalServiceClient accountBudgetProposalServiceClient = googleAdsClient.getLatestVersion().createAccountBudgetProposalServiceClient()) { // Sends the request to the Account Budget Proposal Service. MutateAccountBudgetProposalResponse response = accountBudgetProposalServiceClient.mutateAccountBudgetProposal( String.valueOf(customerId), operation); System.out.printf( "Account budget proposal created: %s.%n", response.getResult().getResourceName()); } }
C#
public void Run(GoogleAdsClient client, long customerId, long billingSetupId) { // Get the AccountBudgetProposalServiceClient. AccountBudgetProposalServiceClient proposalService = client.GetService(Services.V25.AccountBudgetProposalService); // Create an AccountBudgetProposal. The proposal will be reviewed offline by Google Ads, // and if approved will become an AccountBudget. AccountBudgetProposal proposal = new AccountBudgetProposal() { BillingSetup = ResourceNames.BillingSetup(customerId, billingSetupId), ProposalType = AccountBudgetProposalType.Create, ProposedName = "Account Budget (example)", // Specify the account budget starts immediately ProposedStartTimeType = TimeType.Now, // Alternatively, you can specify a specific start time. Refer to the // AccountBudgetProposal resource documentation for allowed formats. // //ProposedStartDateTime = "2020-01-02 03:04:05", // Specify that the budget runs forever. ProposedEndTimeType = TimeType.Forever, // Alternatively you can specify a specific end time. Allowed formats are as above. //ProposedEndDateTime = "2021-02-03 04:05:06", // Optional: set notes for the budget. These are free text and do not effect budget // delivery. //ProposedNotes = "Received prepayment of $0.01", // Set the spending limit to 0.01, measured in the Google Ads account currency. ProposedSpendingLimitMicros = 10_000 // Optional: set PO number for record keeping. This value is at the user's // discretion, and has no effect on Google Billing & Payments. //ProposedPurchaseOrderNumber = "PO number 12345" }; // Create an operation which will add the new AccountBudgetProposal AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation() { Create = proposal }; try { // Send the request to the Account Budget Proposal Service. MutateAccountBudgetProposalResponse response = proposalService. MutateAccountBudgetProposal(customerId.ToString(), operation); // Display the results. Console.WriteLine($"Account budget proposal '{response.Result.ResourceName}' " + "was created."); } 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, int $billingSetupId ) { // Constructs an account budget proposal. $accountBudgetProposal = new AccountBudgetProposal([ 'billing_setup' => ResourceNames::forBillingSetup($customerId, $billingSetupId), 'proposal_type' => AccountBudgetProposalType::CREATE, 'proposed_name' => 'Account Budget (example)', // Specifies the account budget starts immediately. 'proposed_start_time_type' => TimeType::NOW, // Alternatively you can specify a specific start time. Refer to the // AccountBudgetProposal class for allowed formats. // // 'proposed_start_date_time' => '2020-01-02 03:04:05', // Specify that the budget runs forever. 'proposed_end_time_type' => TimeType::FOREVER, // Alternatively you can specify a specific end time. Allowed formats are as above. // 'proposed_end_date_time' => '2021-02-03 04:05:06', // Optional: set notes for the budget. These are free text and do not effect budget // delivery. // 'proposed_notes' => 'Received prepayment of $0.01', // Optional: set PO number for record keeping. This value is at the user's // discretion, and has no effect on Google Billing & Payments. // 'proposed_purchase_order_number' => 'PO number 12345', // Set the spending limit to 0.01, measured in the Google Ads account currency. 'proposed_spending_limit_micros' => 10000 ]); $accountBudgetProposalOperation = new AccountBudgetProposalOperation(); $accountBudgetProposalOperation->setCreate($accountBudgetProposal); // Issues a mutate request to add the account budget proposal. $accountBudgetProposalServiceClient = $googleAdsClient->getAccountBudgetProposalServiceClient(); $response = $accountBudgetProposalServiceClient->mutateAccountBudgetProposal( MutateAccountBudgetProposalRequest::build($customerId, $accountBudgetProposalOperation) ); printf( "Added an account budget proposal with resource name '%s'.%s", $response->getResult()->getResourceName(), PHP_EOL ); }
Python
def main(client: GoogleAdsClient, customer_id: str, billing_setup_id: str): account_budget_proposal_service = client.get_service( "AccountBudgetProposalService" ) billing_setup_service = client.get_service("BillingSetupService") account_budget_proposal_operation = client.get_type( "AccountBudgetProposalOperation" ) proposal = account_budget_proposal_operation.create proposal.proposal_type = client.enums.AccountBudgetProposalTypeEnum.CREATE proposal.billing_setup = billing_setup_service.billing_setup_path( customer_id, billing_setup_id ) proposal.proposed_name = "Account Budget Proposal (example)" # Specify the account budget starts immediately proposal.proposed_start_time_type = client.enums.TimeTypeEnum.NOW # Alternatively you can specify a specific start time. Refer to the # AccountBudgetProposal resource documentation for allowed formats. # # proposal.proposed_start_date_time = '2020-01-02 03:04:05' # Specify that the budget runs forever proposal.proposed_end_time_type = client.enums.TimeTypeEnum.FOREVER # Alternatively you can specify a specific end time. Allowed formats are as # above. # # proposal.proposed_end_date_time = '2021-01-02 03:04:05' # Optional: set notes for the budget. These are free text and do not effect # budget delivery. # # proposal.proposed_notes = 'Received prepayment of $0.01' proposal.proposed_spending_limit_micros = 10000 account_budget_proposal_response = ( account_budget_proposal_service.mutate_account_budget_proposal( customer_id=customer_id, operation=account_budget_proposal_operation, ) ) print( "Created account budget proposal " f'"{account_budget_proposal_response.result.resource_name}".' )
小茹
def add_account_budget_proposal(customer_id, billing_setup_id) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new operation = client.operation.create_resource.account_budget_proposal do |proposal| proposal.billing_setup = client.path.billing_setup(customer_id, billing_setup_id) proposal.proposal_type = :CREATE proposal.proposed_name = 'Account Budget (example)' # Specify the account budget starts immediately proposal.proposed_start_time_type = :NOW # Alternatively you can specify a specific start time. Refer to the # AccountBudgetProposal resource documentation for allowed formats. # # proposal.proposed_start_date_time = '2020-01-02 03:04:05' # Specify that the budget runs forever. proposal.proposed_end_time_type = :FOREVER # Alternatively you can specify a specific end time. Allowed formats are as # above. # # proposal.proposed_end_date_time = '2021-01-02 03:04:05' # Optional: set notes for the budget. These are free text and do not affect # budget delivery. # # proposal.proposed_notes = 'Received prepayment of $0.01' # Set the spending limit to 0.01, measured in the Google Ads account currency. proposal.proposed_spending_limit_micros = 10_000 end account_budget_proposal_service = client.service.account_budget_proposal # Add budget proposal. response = account_budget_proposal_service.mutate_account_budget_proposal( customer_id: customer_id, operation: operation, ) puts sprintf("Created budget proposal %s.", response.results.first.resource_name) end
Perl
sub add_account_budget_proposal { my ($api_client, $customer_id, $billing_setup_id) = @_; # Create an account budget proposal. my $account_budget_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ billingSetup => Google::Ads::GoogleAds::V25::Utils::ResourceNames::billing_setup( $customer_id, $billing_setup_id ), proposalType => CREATE, proposedName => "Account Budget (example)", # Specify that the account budget starts immediately. proposedStartTimeType => NOW, # Alternatively you can specify a specific start time. Refer to the # AccountBudgetProposal class for allowed formats. # # proposedStartDateTime => "2020-01-02 03:04:05", # Specify that the account budget runs forever. proposedEndDateTime => FOREVER, # Alternatively you can specify a specific end time. Allowed formats are as below. # proposedEndDateTime => "2021-02-03 04:05:06", # Optional: set notes for the budget. These are free text and do not effect budget # delivery. # proposedNotes => "Received prepayment of $0.01", # Optional: set PO number for record keeping. This value is at the user's # discretion, and has no effect on Google Billing & Payments. # proposedPurchaseOrderNumber => "PO number 12345", # Set the spending limit to 0.01, measured in the Google Ads account currency. proposedSpendingLimitMicros => 10000 }); # Create an account budget proposal operation. my $account_budget_proposal_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({ create => $account_budget_proposal }); # Add the account budget proposal. my $account_budget_proposal_response = $api_client->AccountBudgetProposalService()->mutate({ customerId => $customer_id, operation => $account_budget_proposal_operation }); printf "Created account budget proposal '%s'.\n", $account_budget_proposal_response->{result}{resourceName}; return 1; }
curl
在帳戶預算提案請求中,proposed_start_date_time 和 proposed_end_date_time 一律採用客戶帳戶時區,您無法指定時區。建議支出上限一律以帳戶幣別計算,並以「微」為單位指定,因此 $1.00 = 1,000,000 微。
您也可以視需要加入訂購單號碼,該號碼會顯示在月結單上這些費用的旁邊。這不會對預算放送造成任何影響。
移除待處理的帳戶預算提案
如要移除整個待處理的預算提案,請傳送 AccountBudgetProposalOperation.remove 要求,並提供帳戶預算提案資源名稱。不過請注意,預算提案通常會在幾分鐘內套用。
AccountBudgetProposalOperation operation = AccountBudgetProposalOperation.newBuilder() .setRemove(ResourceNames.accountBudgetProposal(customerId, accountBudgetProposalId)) .build(); // Send request to Google Ads API (not shown).
AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
Remove = ResourceNames.AccountBudgetProposal(customerId, accountBudgetProposalId)
};
// Send request to Google Ads API (not shown).$accountBudgetProposalOperation = new AccountBudgetProposalOperation(); $accountBudgetProposalOperation->setRemove(ResourceNames::forAccountBudgetProposal($customerId, $accountBudgetProposalId)); // Send request to Google Ads API (not shown).
account_budget_proposal_service = client.get_service('AccountBudgetProposalService') account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') account_budget_proposal_operation.remove = ( account_budget_proposal_service.account_budget_proposal_path( customer_id, account_budget_proposal_id ) ) # Send request to Google Ads API (not shown).
operation = client.operation.remove_resource.account_budget_proposal(client.path.account_budget_proposal(customer_id, account_budget_proposal_id))
# Send request to Google Ads API (not shown).my $account_budget_proposal_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({ remove => Google::Ads::GoogleAds::V25::Utils::ResourceNames::account_budget_proposal( $customer_id, $account_budget_proposal_id ) }); # Send request to Google Ads API (not shown).
如果原始提案有誤,可以重新提交提案,並將其視為 UPDATE 作業。請參閱「更新現有帳戶預算」。
擷取現有帳戶預算
下列 Google Ads 查詢語言 (GAQL) 查詢會擷取帳戶中的所有現有帳戶預算:
SELECT
account_budget.resource_name,
account_budget.id,
account_budget.name,
account_budget.status,
account_budget.billing_setup,
account_budget.approved_spending_limit_micros,
account_budget.approved_spending_limit_type,
account_budget.proposed_spending_limit_micros,
account_budget.proposed_spending_limit_type,
account_budget.adjusted_spending_limit_micros,
account_budget.adjusted_spending_limit_type,
account_budget.approved_start_date_time,
account_budget.proposed_start_date_time,
account_budget.approved_end_date_time,
account_budget.approved_end_time_type,
account_budget.proposed_end_date_time,
account_budget.proposed_end_time_type
FROM
account_budget
封裝帳戶預算開始時間、結束時間和支出上限的欄位有多種變體,前置字元為 proposed 和 approved,可供比較最初提議的值與核准的值。支出上限有額外欄位,並以 adjusted 前置字元表示,指出核准金額套用任何調整項後,目前生效的支出上限。
帳戶預算的核准支出上限可隨時間調整,以反映各種抵免額,例如預算超量放送、無效點擊活動和促銷優待券。如要進一步瞭解帳戶預算和帳戶抵免額與調整項,請前往 Google Ads 說明中心。
任何待核准的新帳戶預算,以及任何待更新的現有帳戶預算,也會填入 pending_proposal 巢狀訊息,其子欄位可在 GAQL 查詢中選取 (例如 account_budget_proposal,查詢為 account_budget.pending_proposal.account_budget_proposal,適用於相關聯的 AccountBudgetProposal 物件的資源名稱)。
管理現有帳戶預算
為客戶建立帳戶預算後,您可以使用 AccountBudgetProposalService 管理預算參數。最常見的管理作業是更新 proposed_spending_limit_micros 和 proposed_end_date_time 欄位。如需可變動欄位的完整清單,請參閱AccountBudgetProposal參考文件。
您可以選擇更新現有帳戶預算,或建立全新的預算;這兩種做法都會顯示在這裡。
更新現有帳戶預算
您可以傳送 AccountBudgetProposal 物件,並將 AccountBudgetProposalType 設為 UPDATE,更新現有帳戶預算欄位。請注意,您也必須在作業的 update_mask 引數中,指出要更新的欄位。
以下程式碼片段說明如何更新現有帳戶預算的建議支出上限。
AccountBudgetProposal proposal = AccountBudgetProposal.newBuilder()
.setProposalType(AccountBudgetProposalType.UPDATE)
.setAccountBudget(accountBudget.getResourceName())
.setProposedSpendingLimitMicros(
accountBudget.getProposedSpendingLimitMicros() + increaseAmount)
.build();
AccountBudgetProposalOperation operation = AccountBudgetProposalOperation.newBuilder()
.setCreate(proposal)
.setUpdateMask(
FieldMask.newBuilder().addAllPaths(Arrays.asList("proposed_spending_limit_micros")).build())
.build();
// Send request to Google Ads API (not shown).AccountBudgetProposal proposal = new AccountBudgetProposal()
{
ProposalType = AccountBudgetProposalType.Update,
AccountBudget = accountBudget.ResourceName,
ProposedSpendingLimitMicros = accountBudget.ProposedSpendingLimitMicros + increaseAmount
};
AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
Create = proposal,
UpdateMask = new FieldMask()
{
Paths = { "proposed_spending_limit_micros" }
}
};
// Send request to Google Ads API (not shown).$accountBudgetProposal = new AccountBudgetProposal([ 'proposal_type' => AccountBudgetProposalType::UPDATE, 'account_budget' => $accountBudget->getResourceName(), 'proposed_spending_limit_micros' => $accountBudget->getProposedSpendingLimitMicros() + $increaseAmount ]); $accountBudgetProposalOperation = new AccountBudgetProposalOperation(); $accountBudgetProposalOperation->setCreate($accountBudgetProposal); $accountBudgetProposalOperation->setUpdateMask( FieldMasks::allSetFieldsOf($accountBudgetProposal) ); // Send request to Google Ads API (not shown).
account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') proposal = account_budget_proposal_operation.create proposal.proposal_type = client.get_type('AccountBudgetProposalTypeEnum').AccountBudgetProposalType.UPDATE proposal.account_budget = account_budget.resource_name proposal.proposed_spending_limit_micros = account_budget.proposed_spending_limit_micros + increase_amount field_mask = protobuf_helpers.field_mask(None, proposal._pb) account_budget_proposal_operation.update_mask.CopyFrom(field_mask) # Send request to Google Ads API (not shown).
proposal = client.resource.account_budget_proposal proposal.proposal_type = :UPDATE mask = client.field_mask.with proposal do proposal.account_budget = account_budget.resource_name proposal.proposed_spending_limit_micros = account_budget.proposed_spending_limit_micros + increase_amount end operation = client.operation.account_budget_proposal do |op| op.create = proposal op.update_mask = mask end # Send request to Google Ads API (not shown).
my $account_budget_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ proposalType => UPDATE, accountBudget => $account_budget->{resourceName}, proposedSpendingLimitMicros => $account_budget->{proposedSpendingLimitMicros} + $increaseAmount}); my $account_budget_proposal_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({ create => $account_budget_proposal, updateMask => all_set_fields_of($account_budget_proposal)}); # Send request to Google Ads API (not shown).
帳戶預算鏈結
除了更新現有預算,Google Ads 也允許您串連多個帳戶預算,依序放送廣告。在下列範例中,客戶每個月的支出上限不同。
如要達成這個目標,請建立三個 AccountBudgetProposal 物件,並在個別的 MutateAccountBudgetProposal 要求中,將每個 AccountBudgetProposalOperation 傳送至 AccountBudgetProposalService (因為 MutateAccountBudgetProposalRequest 每次呼叫只接受一個 operation)。
以下程式碼片段示範如何使用現有帳單設定建立這類鏈結。
AccountBudgetProposal proposalMay = AccountBudgetProposal.newBuilder() .setBillingSetup(ResourceNames.billingSetup(customerId, billingSetupId)) .setProposalType(AccountBudgetProposalType.CREATE) .setProposedName("May budget") .setProposedStartDateTime("2027-05-01 00:00:00") .setProposedEndDateTime("2027-06-01 00:00:00") .setProposedSpendingLimitMicros(1_000_000_000L) .build(); AccountBudgetProposalOperation operationMay = AccountBudgetProposalOperation.newBuilder() .setCreate(proposalMay) .build(); AccountBudgetProposal proposalJune = AccountBudgetProposal.newBuilder() .setBillingSetup(ResourceNames.billingSetup(customerId, billingSetupId)) .setProposalType(AccountBudgetProposalType.CREATE) .setProposedName("June budget") .setProposedStartDateTime("2027-06-01 00:00:00") .setProposedEndDateTime("2027-07-01 00:00:00") .setProposedSpendingLimitMicros(5_000_000_000L) .build(); AccountBudgetProposalOperation operationJune = AccountBudgetProposalOperation.newBuilder() .setCreate(proposalJune) .build(); AccountBudgetProposal proposalJuly = AccountBudgetProposal.newBuilder() .setBillingSetup(ResourceNames.billingSetup(customerId, billingSetupId)) .setProposalType(AccountBudgetProposalType.CREATE) .setProposedName("July budget") .setProposedStartDateTime("2027-07-01 00:00:00") .setProposedEndDateTime("2027-08-01 00:00:00") .setProposedSpendingLimitMicros(1_000_000_000L) .build(); AccountBudgetProposalOperation operationJuly = AccountBudgetProposalOperation.newBuilder() .setCreate(proposalJuly) .build(); // Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).
AccountBudgetProposal proposalMay = new AccountBudgetProposal() { BillingSetup = ResourceNames.BillingSetup(customerId, billingSetupId), ProposalType = AccountBudgetProposalType.Create, ProposedName = "May budget", ProposedStartDateTime = "2027-05-01 00:00:00", ProposedEndDateTime = "2027-06-01 00:00:00", ProposedSpendingLimitMicros = 1_000_000_000 }; AccountBudgetProposalOperation operationMay = new AccountBudgetProposalOperation() { Create = proposalMay }; AccountBudgetProposal proposalJune = new AccountBudgetProposal() { BillingSetup = ResourceNames.BillingSetup(customerId, billingSetupId), ProposalType = AccountBudgetProposalType.Create, ProposedName = "June budget", ProposedStartDateTime = "2027-06-01 00:00:00", ProposedEndDateTime = "2027-07-01 00:00:00", ProposedSpendingLimitMicros = 5_000_000_000 }; AccountBudgetProposalOperation operationJune = new AccountBudgetProposalOperation() { Create = proposalJune }; AccountBudgetProposal proposalJuly = new AccountBudgetProposal() { BillingSetup = ResourceNames.BillingSetup(customerId, billingSetupId), ProposalType = AccountBudgetProposalType.Create, ProposedName = "July budget", ProposedStartDateTime = "2027-07-01 00:00:00", ProposedEndDateTime = "2027-08-01 00:00:00", ProposedSpendingLimitMicros = 1_000_000_000 }; AccountBudgetProposalOperation operationJuly = new AccountBudgetProposalOperation() { Create = proposalJuly }; // Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).
$proposalMay = new AccountBudgetProposal([ 'billing_setup' => ResourceNames::forBillingSetup($customerId, $billingSetupId), 'proposal_type' => AccountBudgetProposalType::CREATE, 'proposed_name' => 'May budget', 'proposed_start_date_time' => '2027-05-01 00:00:00', 'proposed_end_date_time' => '2027-06-01 00:00:00', 'proposed_spending_limit_micros' => 1000000000 ]); $operationMay = new AccountBudgetProposalOperation(); $operationMay->setCreate($proposalMay); $proposalJune = new AccountBudgetProposal([ 'billing_setup' => ResourceNames::forBillingSetup($customerId, $billingSetupId), 'proposal_type' => AccountBudgetProposalType::CREATE, 'proposed_name' => 'June budget', 'proposed_start_date_time' => '2027-06-01 00:00:00', 'proposed_end_date_time' => '2027-07-01 00:00:00', 'proposed_spending_limit_micros' => 5000000000 ]); $operationJune = new AccountBudgetProposalOperation(); $operationJune->setCreate($proposalJune); $proposalJuly = new AccountBudgetProposal([ 'billing_setup' => ResourceNames::forBillingSetup($customerId, $billingSetupId), 'proposal_type' => AccountBudgetProposalType::CREATE, 'proposed_name' => 'July budget', 'proposed_start_date_time' => '2027-07-01 00:00:00', 'proposed_end_date_time' => '2027-08-01 00:00:00', 'proposed_spending_limit_micros' => 1000000000 ]); $operationJuly = new AccountBudgetProposalOperation(); $operationJuly->setCreate($proposalJuly); // Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).
billing_setup_service = client.get_service('BillingSetupService') may_account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') proposal_may = may_account_budget_proposal_operation.create proposal_may.proposal_type = client.get_type('AccountBudgetProposalTypeEnum').AccountBudgetProposalType.CREATE proposal_may.billing_setup = billing_setup_service.billing_setup_path(customer_id, billing_setup_id) proposal_may.proposed_name = 'May budget' proposal_may.proposed_start_date_time = '2027-05-01 00:00:00' proposal_may.proposed_end_date_time = '2027-06-01 00:00:00' proposal_may.proposed_spending_limit_micros = 1000000000 june_account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') proposal_june = june_account_budget_proposal_operation.create proposal_june.proposal_type = client.get_type('AccountBudgetProposalTypeEnum').AccountBudgetProposalType.CREATE proposal_june.billing_setup = billing_setup_service.billing_setup_path(customer_id, billing_setup_id) proposal_june.proposed_name = 'June budget' proposal_june.proposed_start_date_time = '2027-06-01 00:00:00' proposal_june.proposed_end_date_time = '2027-07-01 00:00:00' proposal_june.proposed_spending_limit_micros = 5000000000 july_account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') proposal_july = july_account_budget_proposal_operation.create proposal_july.proposal_type = client.get_type('AccountBudgetProposalTypeEnum').AccountBudgetProposalType.CREATE proposal_july.billing_setup = billing_setup_service.billing_setup_path(customer_id, billing_setup_id) proposal_july.proposed_name = 'July budget' proposal_july.proposed_start_date_time = '2027-07-01 00:00:00' proposal_july.proposed_end_date_time = '2027-08-01 00:00:00' proposal_july.proposed_spending_limit_micros = 1000000000 # Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).
operation_may = client.operation.create_resource.account_budget_proposal do |proposal| proposal.billing_setup = client.path.billing_setup(customer_id, billing_setup_id) proposal.proposal_type = :CREATE proposal.proposed_name = 'May budget' proposal.proposed_start_date_time = '2027-05-01 00:00:00' proposal.proposed_end_date_time = '2027-06-01 00:00:00' proposal.proposed_spending_limit_micros = 1_000_000_000 end operation_june = client.operation.create_resource.account_budget_proposal do |proposal| proposal.billing_setup = client.path.billing_setup(customer_id, billing_setup_id) proposal.proposal_type = :CREATE proposal.proposed_name = 'June budget' proposal.proposed_start_date_time = '2027-06-01 00:00:00' proposal.proposed_end_date_time = '2027-07-01 00:00:00' proposal.proposed_spending_limit_micros = 5_000_000_000 end operation_july = client.operation.create_resource.account_budget_proposal do |proposal| proposal.billing_setup = client.path.billing_setup(customer_id, billing_setup_id) proposal.proposal_type = :CREATE proposal.proposed_name = 'July budget' proposal.proposed_start_date_time = '2027-07-01 00:00:00' proposal.proposed_end_date_time = '2027-08-01 00:00:00' proposal.proposed_spending_limit_micros = 1_000_000_000 end # Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).
my $may_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ billingSetup => Google::Ads::GoogleAds::V25::Utils::ResourceNames::billing_setup( $customer_id, $billing_setup_id ), proposalType => CREATE, proposedName => "May budget", proposedStartDateTime => "2027-05-01 00:00:00", proposedEndDateTime => "2027-06-01 00:00:00", proposedSpendingLimitMicros => 1000000000 }); my $may_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({create => $may_proposal}); my $june_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ billingSetup => Google::Ads::GoogleAds::V25::Utils::ResourceNames::billing_setup( $customer_id, $billing_setup_id ), proposalType => CREATE, proposedName => "June budget", proposedStartDateTime => "2027-06-01 00:00:00", proposedEndDateTime => "2027-07-01 00:00:00", proposedSpendingLimitMicros => 5000000000 }); my $june_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({create => $june_proposal}); my $july_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ billingSetup => Google::Ads::GoogleAds::V25::Utils::ResourceNames::billing_setup( $customer_id, $billing_setup_id ), proposalType => CREATE, proposedName => "July budget", proposedStartDateTime => "2027-07-01 00:00:00", proposedEndDateTime => "2027-08-01 00:00:00", proposedSpendingLimitMicros => 1000000000 }); my $july_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({create => $july_proposal}); # Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).
請注意,每個提案都使用 AccountBudgetProposalType.CREATE。這樣會建立三筆不同的預算,而不是更新同一筆預算三次。
終止帳戶預算
帳戶預算在有效期間可以終止,也可以在開始前或待核准期間完全移除。
結束使用中的帳戶預算
無法移除有效帳戶預算。不過,您可以將結束時間設為目前時間。最簡單的做法是傳送附有 AccountBudgetProposalType.END 的提案。
以下程式碼片段示範如何結束現有帳戶預算。
AccountBudgetProposal proposal = AccountBudgetProposal.newBuilder() .setProposalType(AccountBudgetProposalType.END) .setAccountBudget(accountBudget.getResourceName()) .build(); AccountBudgetProposalOperation operation = AccountBudgetProposalOperation.newBuilder() .setCreate(proposal) .build(); // Send request to Google Ads API (not shown).
AccountBudgetProposal proposal = new AccountBudgetProposal()
{
ProposalType = AccountBudgetProposalType.End,
AccountBudget = accountBudget.ResourceName
};
AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
Create = proposal
};
// Send request to Google Ads API (not shown).$accountBudgetProposal = new AccountBudgetProposal([ 'proposal_type' => AccountBudgetProposalType::END, 'account_budget' => $accountBudget->getResourceName() ]); $accountBudgetProposalOperation = new AccountBudgetProposalOperation(); $accountBudgetProposalOperation->setCreate($accountBudgetProposal); // Send request to Google Ads API (not shown).
account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') proposal = account_budget_proposal_operation.create proposal.proposal_type = client.get_type('AccountBudgetProposalTypeEnum').AccountBudgetProposalType.END proposal.account_budget = account_budget.resource_name # Send request to Google Ads API (not shown).
operation = client.operation.create_resource.account_budget_proposal do |proposal| proposal.proposal_type = :END proposal.account_budget = account_budget.resource_name end # Send request to Google Ads API (not shown).
my $account_budget_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ proposalType => END, accountBudget => $account_budget->{resourceName} }); my $account_budget_proposal_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({create => $account_budget_proposal}); # Send request to Google Ads API (not shown).
這相當於將結束日期時間設為 TimeType.NOW,藉此更新帳戶預算。
在核准的帳戶預算開始時間前移除
如果您提議在日後啟用帳戶預算,可以在開始時間前傳送AccountBudgetProposalType.REMOVE提案類型,完全移除該預算。
下列程式碼片段示範如何移除現有的未來帳戶預算。
AccountBudgetProposal proposal = AccountBudgetProposal.newBuilder() .setProposalType(AccountBudgetProposalType.REMOVE) .setAccountBudget(accountBudget.getResourceName()) .build(); AccountBudgetProposalOperation operation = AccountBudgetProposalOperation.newBuilder() .setCreate(proposal) .build(); // Send request to Google Ads API (not shown).
AccountBudgetProposal proposal = new AccountBudgetProposal()
{
ProposalType = AccountBudgetProposalType.Remove,
AccountBudget = accountBudget.ResourceName
};
AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
Create = proposal
};
// Send request to Google Ads API (not shown).$accountBudgetProposal = new AccountBudgetProposal([ 'proposal_type' => AccountBudgetProposalType::REMOVE, 'account_budget' => $accountBudget->getResourceName() ]); $accountBudgetProposalOperation = new AccountBudgetProposalOperation(); $accountBudgetProposalOperation->setCreate($accountBudgetProposal); // Send request to Google Ads API (not shown).
account_budget_proposal_operation = client.get_type('AccountBudgetProposalOperation') proposal = account_budget_proposal_operation.create proposal.proposal_type = client.get_type('AccountBudgetProposalTypeEnum').AccountBudgetProposalType.REMOVE proposal.account_budget = account_budget.resource_name # Send request to Google Ads API (not shown).
operation = client.operation.create_resource.account_budget_proposal do |proposal| proposal.proposal_type = :REMOVE proposal.account_budget = account_budget.resource_name end # Send request to Google Ads API (not shown).
my $account_budget_proposal = Google::Ads::GoogleAds::V25::Resources::AccountBudgetProposal->new({ proposalType => REMOVE, accountBudget => $account_budget->{resourceName} }); my $account_budget_proposal_operation = Google::Ads::GoogleAds::V25::Services::AccountBudgetProposalService::AccountBudgetProposalOperation ->new({create => $account_budget_proposal}); # Send request to Google Ads API (not shown).