Budżety konta

Budżety konta określają, ile konto może wydać w określonym czasie, definiując właściwości budżetu, takie jak limit wydatków, czas rozpoczęcia i czas zakończenia. Muszą one wskazywać jedną z konfiguracji płatności na koncie, aby określić, które konto płatności zostanie obciążone. Obiekt AccountBudget możesz tworzyć, aktualizować i usuwać w interfejsie Google Ads API, wysyłając obiekty AccountBudgetProposal.

AccountBudget obiekty reprezentują efekt końcowy zastosowania propozycji. Po zatwierdzeniu propozycji jej zmiany (z uwzględnieniem wszelkich korekt) spowodują utworzenie nowego budżetu konta lub zaktualizowanie istniejącego. Zależy to od wartości proposal_type określonej w żądaniu.

AccountBudgetProposalType Opis
CREATE Tworzy nowy budżet konta, który przed użyciem musi zostać zatwierdzony.
UPDATE Modyfikuje istniejący budżet konta.
END Ustawia czas zakończenia budżetu konta na bieżący czas.
REMOVE Usuwa budżet konta przed jego czasem rozpoczęcia.

W sekcjach poniżej opisujemy działanie każdego typu propozycji.

Tworzenie propozycji budżetu konta

Utworzenie nowego budżetu konta pozwala kontrolować wydatki klienta. Aby utworzyć nową AccountBudgetProposal, użyj AccountBudgetProposalService. Aby określić że należy utworzyć nowy budżet, ustaw proposal_type na CREATE. Informacje o innych operacjach znajdziesz w sekcji Zarządzanie w tym przewodniku.

Pamiętaj, aby używać konfiguracji płatności z kontem płatności, do którego masz dostęp do zapisu. Szczegółowe informacje znajdziesz w przewodniku po konfiguracji płatności.

W przykładzie poniżej pokazujemy, jak utworzyć nową propozycję budżetu.

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}".'
    )
      

Ruby

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

W żądaniach propozycji budżetu konta wartości proposed_start_date_time i proposed_end_date_time są zawsze podawane w strefie czasowej konta klienta. Nie możesz określić strefy czasowej. Proponowany limit wydatków jest zawsze mierzony w walucie konta.Określ go za pomocą mikrojednostek, czyli 1,00 USD = 1 000 000 mikrojednostek.

Opcjonalnie możesz podać numer zamówienia, który będzie widoczny obok tych opłat na fakturze. Nie ma to wpływu na wykorzystanie budżetu.

Usuwanie propozycji budżetu konta w stanie oczekiwania

Możesz usunąć całą propozycję budżetu w stanie oczekiwania, wysyłając żądanie AccountBudgetProposalOperation.remove z nazwą zasobu propozycji budżetu konta. Pamiętaj jednak, że propozycje budżetu są zwykle stosowane w ciągu kilku minut.

Java
AccountBudgetProposalOperation operation = AccountBudgetProposalOperation.newBuilder()
  .setRemove(ResourceNames.accountBudgetProposal(customerId, accountBudgetProposalId))
  .build();

// Send request to Google Ads API (not shown).
C#
AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
    Remove = ResourceNames.AccountBudgetProposal(customerId, accountBudgetProposalId)
};

// Send request to Google Ads API (not shown).
PHP
$accountBudgetProposalOperation = new AccountBudgetProposalOperation();
$accountBudgetProposalOperation->setRemove(ResourceNames::forAccountBudgetProposal($customerId, $accountBudgetProposalId));

// Send request to Google Ads API (not shown).
Python
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).
Ruby
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).
Perl
my $account_budget_proposal_operation =
  Google::Ads::GoogleAds::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({
      remove => Google::Ads::GoogleAds::V26::Utils::ResourceNames::account_budget_proposal(
          $customer_id, $account_budget_proposal_id
        )
    });

# Send request to Google Ads API (not shown).

Jeśli popełnisz błąd w pierwotnej propozycji, możesz przesłać ją ponownie jako operację UPDATE. Więcej informacji znajdziesz w artykule Aktualizowanie istniejącego budżetu konta.

Pobieranie dotychczasowych budżetów konta

To zapytanie w języku zapytań Google Ads (GAQL) pobiera wszystkie dotychczasowe budżety konta:

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

Pola, które zawierają czas rozpoczęcia, czas zakończenia i limit wydatków budżetu konta, mają kilka wariantów z prefiksami takimi jak proposed i approved, które umożliwiają porównanie wartości zaproponowanych z wartościami zatwierdzonymi. Limit wydatków ma dodatkowe pola z prefiksem adjusted, które wskazują bieżący limit wydatków obowiązujący po zastosowaniu korekt do zatwierdzonej kwoty.

Zatwierdzony limit wydatków budżetu konta można z czasem dostosowywać, aby uwzględnić różne środki na reklamę, np. za nadmierne wyświetlenia, nieprawidłowe kliknięcia i kupony promocyjne. Więcej informacji o budżetach konta oraz środkach na reklamę i korektach znajdziesz w Centrum pomocy Google Ads.

Wszystkie nowe budżety konta oczekujące na zatwierdzenie oraz wszystkie dotychczasowe budżety konta, które mają oczekujące aktualizacje, będą też wypełniać zagnieżdżony komunikat pending_proposal, którego pola podrzędne można wybrać w zapytaniu GAQL (np. account_budget_proposal, o które można zapytać jako account_budget.pending_proposal.account_budget_proposal, aby uzyskać nazwę zasobu powiązanego obiektu AccountBudgetProposal ).

Zarządzanie dotychczasowymi budżetami konta

Po utworzeniu budżetu konta dla klienta możesz zarządzać parametrami budżetu za pomocą AccountBudgetProposalService. Najczęstsze operacje zarządzania to aktualizowanie pól proposed_spending_limit_micros i proposed_end_date_time. Pełną listę pól, które można zmieniać, znajdziesz w dokumentacji referencyjnej AccountBudgetProposal.

Możesz zaktualizować dotychczasowy budżet konta lub utworzyć zupełnie nowy budżet. Obie te opcje są opisane poniżej.

Aktualizowanie istniejącego budżetu konta

Pola dotychczasowego budżetu konta możesz zaktualizować, wysyłając AccountBudgetProposal obiekty z AccountBudgetProposalType ustawioną na UPDATE. Pamiętaj, że w argumencie update_mask operacji musisz też wskazać aktualizowane pola.

W przykładzie poniżej pokazujemy, jak zaktualizować proponowany limit wydatków w przypadku dotychczasowego budżetu konta.

Java
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).
C#
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).
PHP
$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).
Python
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).
Ruby
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).
Perl
my $account_budget_proposal =
  Google::Ads::GoogleAds::V26::Resources::AccountBudgetProposal->new({
    proposalType => UPDATE,
    accountBudget => $account_budget->{resourceName},
    proposedSpendingLimitMicros => $account_budget->{proposedSpendingLimitMicros} + $increaseAmount});

my $account_budget_proposal_operation =
  Google::Ads::GoogleAds::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({
      create => $account_budget_proposal,
      updateMask => all_set_fields_of($account_budget_proposal)});

# Send request to Google Ads API (not shown).

Łączenie budżetów konta

Google Ads umożliwia łączenie wielu budżetów konta, które będą działać kolejno, zamiast aktualizować dotychczasowy budżet. W przykładzie poniżej klient ma różne limity wydatków w każdym miesiącu.

Diagram przedstawiający łańcuch budżetów konta z różnymi limitami wydatków w poszczególnych miesiącach.
Przykład łączenia budżetów konta.

Można to osiągnąć, tworząc trzy AccountBudgetProposal obiekty i wysyłając każdą AccountBudgetProposalOperation do AccountBudgetProposalService w osobnym MutateAccountBudgetProposal żądaniu (ponieważ MutateAccountBudgetProposalRequest akceptuje tylko jedno operation na wywołanie).

W przykładzie poniżej pokazujemy, jak utworzyć taki łańcuch za pomocą dotychczasowej konfiguracji płatności.

Java
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).
C#
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).
PHP
$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).
Python
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).
Ruby
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).
Perl
my $may_proposal =
  Google::Ads::GoogleAds::V26::Resources::AccountBudgetProposal->new({
    billingSetup =>
      Google::Ads::GoogleAds::V26::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::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({create => $may_proposal});

my $june_proposal =
  Google::Ads::GoogleAds::V26::Resources::AccountBudgetProposal->new({
    billingSetup =>
      Google::Ads::GoogleAds::V26::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::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({create => $june_proposal});

my $july_proposal =
  Google::Ads::GoogleAds::V26::Resources::AccountBudgetProposal->new({
    billingSetup =>
      Google::Ads::GoogleAds::V26::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::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({create => $july_proposal});

# Send requests to Google Ads API, one MutateAccountBudgetProposal call per operation (not shown).

Zwróć uwagę na użycie AccountBudgetProposalType.CREATE w każdej propozycji. Spowoduje to utworzenie 3 różnych budżetów, a nie 3 aktualizacji tego samego budżetu.

Zakończenie budżetów konta

Budżety konta można zakończyć, gdy są aktywne, oraz całkowicie usunąć przed rozpoczęciem lub w trakcie oczekiwania na zatwierdzenie.

Zakończenie aktywnego budżetu konta

Nie można usunąć aktywnego budżetu konta. Możesz jednak ustawić czas zakończenia na bieżący czas. Najprostszym sposobem na to jest wysłanie propozycji z AccountBudgetProposalType.END.

W przykładzie poniżej pokazujemy, jak zakończyć dotychczasowy budżet konta.

Java
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).
C#
AccountBudgetProposal proposal = new AccountBudgetProposal()
{
  ProposalType = AccountBudgetProposalType.End,
  AccountBudget = accountBudget.ResourceName
};

AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
  Create = proposal
};

// Send request to Google Ads API (not shown).
PHP
$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).
Python
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).
Ruby
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).
Perl
my $account_budget_proposal =
  Google::Ads::GoogleAds::V26::Resources::AccountBudgetProposal->new({
    proposalType => END,
    accountBudget => $account_budget->{resourceName}
  });

my $account_budget_proposal_operation =
  Google::Ads::GoogleAds::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({create => $account_budget_proposal});

# Send request to Google Ads API (not shown).

Jest to równoznaczne z zaktualizowaniem budżetu konta przez ustawienie czasu zakończenia na TimeType.NOW.

Usuwanie zatwierdzonego budżetu konta przed jego czasem rozpoczęcia

Jeśli zaproponujesz budżet konta, który ma się rozpocząć w przyszłości, możesz go usunąć całkowicie przed czasem rozpoczęcia, wysyłając AccountBudgetProposalType.REMOVE propozycję typu.

W przykładzie poniżej pokazujemy, jak usunąć dotychczasowy budżet konta, który ma się rozpocząć w przyszłości.

Java
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).
C#
AccountBudgetProposal proposal = new AccountBudgetProposal()
{
  ProposalType = AccountBudgetProposalType.Remove,
  AccountBudget = accountBudget.ResourceName
};

AccountBudgetProposalOperation operation = new AccountBudgetProposalOperation()
{
  Create = proposal
};

// Send request to Google Ads API (not shown).
PHP
$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).
Python
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).
Ruby
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).
Perl
my $account_budget_proposal =
  Google::Ads::GoogleAds::V26::Resources::AccountBudgetProposal->new({
    proposalType => REMOVE,
    accountBudget => $account_budget->{resourceName}
  });

my $account_budget_proposal_operation =
  Google::Ads::GoogleAds::V26::Services::AccountBudgetProposalService::AccountBudgetProposalOperation
    ->new({create => $account_budget_proposal});

# Send request to Google Ads API (not shown).