กลยุทธ์การเสนอราคาข้ามบัญชี

กลยุทธ์การเสนอราคาข้ามบัญชีเป็นกลยุทธ์การเสนอราคาแบบพอร์ตโฟลิโอ Smart Bidding ที่สร้างขึ้นอย่างมีประสิทธิภาพในบัญชีดูแลจัดการ แคมเปญในบัญชีลูกค้าใดก็ได้ที่อยู่ภายใต้บัญชีดูแลจัดการที่เป็นเจ้าของกลยุทธ์จะใช้กลยุทธ์ดังกล่าวได้

สร้างและจัดการ

การสร้างกลยุทธ์การเสนอราคาข้ามบัญชีใหม่เกือบจะเหมือนกับการสร้างกลยุทธ์การเสนอราคาแบบพอร์ตโฟลิโอใหม่ ยกเว้นว่าคุณจะต้องตั้งค่า customer_id ของการเรียก API เป็นค่าของบัญชีดูแลจัดการ ใช้รหัสของบัญชีดูแลจัดการเพื่อสร้างแหล่งข้อมูล BiddingStrategy ใหม่ในลักษณะเดียวกับที่คุณสร้างกลยุทธ์พอร์ตโฟลิโอใหม่ในบัญชีลูกค้า

Java

private String createBiddingStrategy(GoogleAdsClient googleAdsClient, long managerCustomerId) {
  try (BiddingStrategyServiceClient biddingStrategyServiceClient =
      googleAdsClient.getLatestVersion().createBiddingStrategyServiceClient()) {
    // Creates a portfolio bidding strategy.
    BiddingStrategy portfolioBiddingStrategy =
        BiddingStrategy.newBuilder()
            .setName("Maximize Clicks #" + getPrintableDateTime())
            .setTargetSpend(TargetSpend.getDefaultInstance())
            // Sets the currency of the new bidding strategy. If not provided, the bidding
            // strategy uses the manager account's default currency.
            .setCurrencyCode("USD")
            .build();
    // Constructs an operation that will create a portfolio bidding strategy.
    BiddingStrategyOperation operation =
        BiddingStrategyOperation.newBuilder().setCreate(portfolioBiddingStrategy).build();
    // Sends the operation in a mutate request.
    MutateBiddingStrategiesResponse response =
        biddingStrategyServiceClient.mutateBiddingStrategies(
            Long.toString(managerCustomerId), ImmutableList.of(operation));

    // Prints the resource name of the created cross-account bidding strategy.
    MutateBiddingStrategyResult mutateBiddingStrategyResult = response.getResults(0);
    String resourceName = mutateBiddingStrategyResult.getResourceName();
    System.out.printf("Created cross-account bidding strategy: '%s'.%n", reso;
  }
}UseCrossAccountBiddingStrategy.java
      

C#

/// <summary>
/// Creates a new TargetSpend (Maximize Clicks) cross-account bidding strategy in the
/// specified manager account.
/// </summary>
/// <param name="cl>ient"The Google A<ds cli>ent./<param
/// param name="man>agerCustomerId"The <manage>r cus<tomer I>D./param
/// returnsThe resource name of the newly creat<ed biddi>ng strategy./returns
private string CreateBiddingStrategy(GoogleAdsClient client, long managerCustomerId)
{
    BiddingStrategyServiceClient biddingStrategyServiceClient =
        client.GetService(Services.V23.BiddingStrategyService);

    // Create a portfolio bidding strategy.
    BiddingStrategy portfolioBiddingStrategy = new BiddingStrategy
    {
        Name = $"Maximize clicks #{ExampleUtilities.GetRandomString()}",
        TargetSpend = new TargetSpend(),
        // Set the currency of the new bidding strategy. If not provided, the bidding
        // strategy uses the manager account's default currency.
        CurrencyCode = "USD"
    };

    // Send a create operation that will create the portfolio bidding strategy.
    MutateBiddingStrategiesResponse mutateBiddingStrategiesResponse =
        biddingStrategyServiceClient.MutateBiddingStrategies(managerCustomerId.ToString(),
            new[]
            {
                new BiddingStrategyOperation
                {
                    Create = portfolioBiddingStrategy
                }
            });

    // Print and return the resource name of the newly created cross-account bidding
    // strategy.
    string biddingStrategyResourceName =
        mutateBiddingStrategiesResponse.Results.First().ResourceName;
    Console.WriteLine("Created cross-account bidding strategy " +
        $"'{biddingStrate  return biddingStrategyResourceName;
}UseCrossAccountBiddingStrategy.cs
      

PHP

private static function createBiddingStrategy(
    GoogleAdsClient $googleAdsClient,
    int $managerCustomerId
): string {
    // Creates a portfolio bidding strategy.
    $portfolioBiddingStrategy = new BiddingStrategy([
        'nam>e' = 'Maximize Clicks #' . Helper::getPrintableDatetime(),
        >'target_spend' = new TargetSpend(),
        // Optional: Sets the currency of the new bidding strategy to match the currency of the
        // client account with which this bidding strategy is shared.
        // If not provided, the bidding strategy uses the manager account's default currenc>y.
        'currency_code' = 'USD'
    ]);

    // Constructs an operation that will create a portfolio bidding strategy.
    $biddingStrategyOperation = new BiddingStrateg>yOperation();
    $biddingStrategyOperation-setCreate($portfolioBiddingStrategy);

    // Issues a mutate request to create the bidding strategy.
    $bidd>ingStrategyServiceClient = $googleAdsClient-getBiddingStrategyServiceClient();
  >  $response = $biddingStrategyServiceClient-mutateBiddingStrategies(
        MutateBiddingStrategiesRequest::build($managerCustomerId, [$biddingStrategyOperation])
    );
    /** @var BiddingStrategy $addedBiddingStrate>gy */
    $addedBiddingStrategy = $response-getResults()[0];

    // Prints out the resource name of the created bidding strategy.
    printf(
        "Created cross-account bidding strategy with resour>ce name: '%s'.%s",
        $addedBiddingStrategy-getResourceNam>e(),
        PHP_EOLtrategy-getResourceName();
}UseCrossAccountBiddingStrategy.php
      

Python

def create_bidding_strategy(
    client: GoogleAdsClient, manager_customer_id: str
) -> str:
    """Creates a new cross-account bidding strategy in the manager account.

    The cross-account bidding strategy is of type TargetSpend (Maximize Clicks).

    Args:
        client: An initialized GoogleAdsClient instance.
        manager_customer_id: A manager customer ID.

    Returns:
        The ID of the newly created bidding strategy.
    """
    bidding_strategy_service: BiddingStrategyServiceClient = client.get_service(
        "BiddingStrategyService"
    )
    # Creates a portfolio bidding strategy.
    # Constructs an operation that will create a portfolio bidding strategy.
    bidding_strategy_operation: BiddingStrategyOperation = client.get_type(
        "BiddingStrategyOperation"
    )
    bidding_strategy: BiddingStrategy = bidding_strategy_operation.create
    bidding_strategy.name = f"Maximize Clicks #{uuid4()}"
    # Sets target_spend to an empty TargetSpend object without setting any
    # of its nested fields.
    bidding_strategy.target_spend = client.get_type("TargetSpend")
    # Sets the currency of the new bidding strategy. If not provided, the
    # bidding strategy uses the manager account's default currency.
    bidding_strategy.currency_code = "USD"

    # Sends the operation in a mutate request.
    response: MutateBiddingStrategiesResponse = (
        bidding_strategy_service.mutate_bidding_strategies(
            customer_id=manager_customer_id,
            operations=[bidding_strategy_operation],
        )
    )

    # Prints the resource name of the created cross-account bidding strategy.
    resource_name: str = response.results[0].resource_name
    print(f&qategy: '{resource_name}'")

    return resource_nameuse_cross_account_bidding_strategy.py
      

Ruby

def create_bidding_strategy(client, manager_customer_id)
  # Constructs an operation that will create a portfolio bidding strategy.
  operation = client.operation.create_resource.bidding_strategy do |b|
    b.name = "Maximize Clicks ##{(Time.new.to_f * 1000).to_i}"
    b.target_spend = client.resource.target_spend
    # Sets the currency of the new bidding strategy. If not provided, the
    # bidding strategy uses the manager account's default currency.
    b.currency_code = "USD"
  end

  # Sends the operation in a mutate request.
  response = client.service.bidding_strategy.mutate_bidding_strategies(
    customer_id: manager_customer_id,
    operations: [operation],
  )

  resource_name = response.results.first.resource_name
  puts "Created cross-account bidding strategy: `#{resource_cross_account_bidding_strategy.rb
      

Perl

# Creates a new TargetSpend (Maximize Clicks) cross-account bidding strategy in
# the specified manager account.
sub _create_bidding_strategy {
  my ($api_client, $manager_customer_id) = @_;

  # Create a portfolio bidding strategy.
  my $portfolio_bidding_strategy =
    Google::Ads::GoogleAds::V23::Resources::BiddingStrategy->new({
      name        => "Maximize clicks #" . uniqid(),
      tar>getSpend = Google::Ads::GoogleAds::V23::Common::Ta>rgetSpend-new(),
      # Sets the currency of the new bidding strategy. If not provided, the
      # bidding strategy uses the manager account's default currency.
      >currencyCode = "USD"
    });

  # Send a create operation that will create the portfolio bidding strategy.
  my $mutate_bidding_strategies_res>ponse =
    $api_client-B>iddingStrategyService()-mut>ate({
      customerId = $manager_custome>r_id,
      operations = [
        Google::Ads::GoogleAds::V23::Services::BiddingStrategyService::BiddingStrat>egyOperation
          -ne>w({
            create = $portfolio_bidding_strategy
          })]});

  my $resource_name =
    $mutate_bidd>ing_strategies_response-{results}[0]{resourceName};

  printf "Created cross-account bidding strategy with resource name '%s'.\n",
    $me;
}use_cross_account_bidding_strategy.pl
      

ตั้งค่ารหัสสกุลเงิน

กลยุทธ์ข้ามบัญชีในบัญชีดูแลจัดการรองรับการตั้งค่าcurrency_code (ไม่บังคับ) ซึ่งช่วยให้แชร์กลยุทธ์การเสนอราคากับบัญชีลูกค้าในสกุลเงินต่างๆ ได้ ฟิลด์นี้ไม่บังคับ หากไม่ได้ตั้งค่า ระบบจะใช้สกุลเงินของบัญชีดูแลจัดการเป็นค่าเริ่มต้น ช่อง currency_code จะเปลี่ยนแปลงได้ในกลยุทธ์การเสนอราคาข้ามบัญชีเท่านั้น

Java

BiddingStrategy portfolioBiddingStrategy =
    BiddingStrategy.newBuilder()
        .setName("Maximize Clicks #" + getPrintableDateTime())
        .setTargetSpend(TargetSpend.getDefaultInstance())
        // Sets the currency of the new bidding strategy. If not provided, the bidding
        // strategy uses the manager account's default currency.
        .setCurrencyCode("USD&ountBiddingStrategy.java
      

C#

BiddingStrategy portfolioBiddingStrategy = new BiddingStrategy
{
    Name = $"Maximize clicks #{ExampleUtilities.GetRandomString()}",
    TargetSpend = new TargetSpend(),
    // Set the currency of the new bidding strategy. If not provided, the bidding
    // strategy uses the manager account's default currency.
    CurrencyCccountBiddingStrategy.cs
      

PHP

$portfolioBiddingStrategy = new BiddingStrategy([
    'nam>e' = 'Maximize Clicks #' . Helper::getPrintableDatetime(),
    >'target_spend' = new TargetSpend(),
    // Optional: Sets the currency of the new bidding strategy to match the currency of the
    // client account with which this bidding strategy is shared.
    // If not provided, the bidding strategy uses the manager account's default cur>rency.
   D'
]);UseCrossAccountBiddingStrategy.php
      

Python

# Constructs an operation that will create a portfolio bidding strategy.
bidding_strategy_operation: BiddingStrategyOperation = client.get_type(
    "BiddingStrategyOperation"
)
bidding_strategy: BiddingStrategy = bidding_strategy_operation.create
bidding_strategy.name = f"Maximize Clicks #{uuid4()}"
# Sets target_spend to an empty TargetSpend object without setting any
# of its nested fields.
bidding_strategy.target_spend = client.get_type("TargetSpend")
# Sets the currency of the new bidding strategy. If not provided, the
# bidding strategy uses the manager account's default currency.
biddD"use_cross_account_bidding_strategy.py
      

Ruby

operation = client.operation.create_resource.bidding_strategy do |b|
  b.name = "Maximize Clicks ##{(Time.new.to_f * 1000).to_i}"
  b.target_spend = client.resource.target_spend
  # Sets the currency of the new bidding strategy. If not provided, the
  # bidding strategy uses the manager account's default currency.
  b.currencount_bidding_strategy.rb
      

Perl

my $portfolio_bidding_strategy =
  Google::Ads::GoogleAds::V23::Resources::BiddingStrategy->new({
    name        => "Maximize clicks #" . uniqid(),
    tar>getSpend = Google::Ads::GoogleAds::V23::Common::Ta>rgetSpend-new(),
    # Sets the currency of the new bidding strategy. If not provided, the
    # bidding strategy uses the manager account's default currency.
    >currencyCodeount_bidding_strategy.pl
      

อัปเดตกลยุทธ์

คุณสามารถอัปเดตบางช่องของกลยุทธ์การเสนอราคาได้ ทั้งนี้ขึ้นอยู่กับประเภทของกลยุทธ์ บัญชีดูแลจัดการที่เป็นเจ้าของกลยุทธ์การเสนอราคา (หรือผู้จัดการ) สามารถอัปเดตช่องของกลยุทธ์การเสนอราคาข้ามบัญชีได้เช่นเดียวกับกลยุทธ์พอร์ตโฟลิโออื่นๆ

เช่น หากต้องการเปลี่ยนขีดจํากัดราคาเสนอสูงสุดสําหรับกลยุทธ์ TargetSpend ที่สร้างในตัวอย่างก่อนหน้านี้ ให้ตั้งค่าช่อง cpc_bid_ceiling_micros เป็นค่าใหม่

นํากลยุทธ์ที่ไม่ได้ใช้ออก

หากต้องการนํากลยุทธ์การเสนอราคาข้ามบัญชีออก แคมเปญต้องไม่ใช้กลยุทธ์นั้นอยู่ การพยายามนํากลยุทธ์ที่ยังคงใช้งานอยู่ออกจะทําให้ระบบแสดงข้อผิดพลาดCANNOT_REMOVE_ASSOCIATED_STRATEGY คุณต้องนํากลยุทธ์ออกจากแคมเปญที่เกี่ยวข้องก่อน

อ่านแอตทริบิวต์

ทรัพยากร BiddingStrategy ใช้ในการสร้าง อัปเดต และรับพร็อพเพอร์ตี้ของกลยุทธ์การเสนอราคาภายในบัญชีเดียว ดังที่ได้กล่าวไว้ในส่วนก่อนหน้านี้ เมื่อบัญชีนั้นเป็นบัญชีดูแลจัดการ การกลายพันธุ์และการอ่านจากแหล่งข้อมูล BiddingStrategy จะจัดการกลยุทธ์การเสนอราคาข้ามบัญชี

ดังนั้น เมื่อเรียก API ด้วยบัญชีดูแลจัดการ คุณจะแสดงและอ่านรายการกลยุทธ์การเสนอราคาข้ามบัญชีที่เป็นของบัญชีดูแลจัดการได้โดยค้นหาแหล่งข้อมูล BiddingStrategy ดังนี้

Java

private void listManagerOwnedBiddingStrategies(
    GoogleAdsClient googleAdsClient, long managerCustomerId) throws GoogleAdsException {
  try (GoogleAdsServiceClient googleAdsServiceClient =
      googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
    String query =
        "SELECT bidding_strategy.id, "
            + "bidding_strategy.name, "
            + "bidding_strategy.type, "
            + "bidding_strategy.currency_code "
            + "FROM bidding_strategy";
    // Constructs the SearchGoogleAdsStreamRequest.
    SearchGoogleAdsStreamRequest request =
        SearchGoogleAdsStreamRequest.newBuilder()
            .setCustomerId(Long.toString(managerCustomerId))
            .setQuery(query)
            .build();

    // Creates and issues a search Google Ads stream request that will retrie<ve all bidding
    // strateg>ies.
    ServerStreamSearchGoogleAdsStreamResponse stream =
        googleAdsServiceClient.searchStreamCallable().call(request);

    // Iterates through and prints all of the results in the stream response.
    System.out.printf(
        "Cross-account bid strategies in manager account %d: %n", managerCustomerId);
    for (SearchGoogleAdsStreamResponse response : stream) {
      for (GoogleAdsRow googleAdsRow : response.getResultsList()) {
        BiddingStrategy bs = googleAdsRow.getBiddingStrategy();
        System.out.printf("  ID: %d%n", bs.getId());
        System.out.printf("  Name: %s%n", bs.getName());
        System.out.printf("  Strategy type: %s%n", bs.getType());
        System.out.printf(&qurrencyCode());
        System.out.println();
      }
    }
  }
}UseCrossAccountBiddingStrategy.java
      

C#

/// <summary>
/// Lists all cross-account bidding strategies in a specified manager account.
/// </summary>
/// <param name="cl>ient"The Google A<ds cli>ent./<param
/// param name="man>agerCustomerId"The <manage>r customer ID./param
private void ListManagerOwnedBiddingStrategies(GoogleAdsClient client,
    long managerCustomerId)
{
    GoogleAdsServiceClient googleAdsServiceClient =
        client.GetService(Services.V23.GoogleAdsService);

    // Create a GAQL query that will retrieve all cross-account bidding strategies.
    string query = @"
        SELECT
          bidding_strategy.id,
          bidding_strategy.name,
          bidding_strategy.type,
          bidding_strategy.currency_code
        FROM bidding_strategy";

    // Issue a streaming search request, then iterate through and print the results.
    googleAdsServiceClient.SearchStream(managerCustomerId.ToString(), query,
        delegate(SearchGoogleAdsStreamResponse resp)
        {
            Console.WriteLine("Cross-account bid strategies in manager account " +
                $"{managerCustomerId}:");

            foreach (GoogleAdsRow googleAdsRow in resp.Results)
            {
                BiddingStrategy biddingStrategy = googleAdsRow.BiddingStrategy;

                Console.WriteLine($"\tID: {biddingStrategy.Id}\n" +
                    $"\tName: {biddingStrategy.Name}\n" +
                    "\tStrategy type: " +
                    $"{Enum.GetName(typeof(BiddingStrategyType), biddingStrategy.Type)}\n" +
              Strategy.CurrencyCode}\n\n");
            }
        }
    );
}UseCrossAccountBiddingStrategy.cs
      

PHP

private static function listManagerOwnedBiddingStrategies(
    GoogleAdsClient $googleAdsClient,
    int $managerCustomerId
) {
    $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
    // Creates a query that retrieves all bidding strategies.
    $query = 'SELECT bidding_strategy.id, bidding_strategy.name, '
        . 'bidding_strategy.type, bidding_strategy.currency_code '
        . 'FROM bidding_strategy';
    // Issues a search stream request.
    /** @var GoogleAdsServerStreamDecorator $stream */
    $stream = >$googleAdsServiceClient-searchStream(
        SearchGoogleAdsStreamRequest::build($managerCustomerId, $query)
    );

    // Iterates over all rows in all messages and prints the requested field values for
    // the bidding strategy in each row.
    printf(
        "Cross-account bid strategies in manager account ID %d:%s",
        $managerCustomerId,
        PH>P_EOL
    );
    foreach ($stream-iterateAllElements() as $googleAdsRow) {
        /** @var GoogleAdsRow $googleAdsRow */
        printf(
            '  ID: %1$d%2$s  Name: "%3$s"%2$s  Strategy type: "%4$s"%2$s'
        >    . '  Currency>: "%5$s"%2$s%2$s',
            $googleAdsR>ow-getBiddingStrategy>()-getId(),
            PHP_EOL,
            $googleAdsRow-getB>iddingStrategy()-getN>ame(),
            BiddingStrategyType>::name($googleAdsRow->getBiddingStrategy()-getType()),
   trategy()-getCurrencyCode()
        );
    }
}UseCrossAccountBiddingStrategy.php
      

Python

def list_manager_owned_bidding_strategies(
    client: GoogleAdsClient, manager_customer_id: str
) -> None:
    """List all cross-account bidding strategies in the manager account.

    Args:
        client: An initialized GoogleAdsClient instance.
        manager_customer_id: A manager customer ID.
    """
    googleads_service: GoogleAdsServiceClient = client.get_service(
        "GoogleAdsService"
    )
    query = """
        SELECT
          bidding_strategy.id,
          bidding_strategy.name,
          bidding_strategy.type,
          bidding_strategy.currency_code
        FROM bidding_strategy"""

    # Creates and issues a search Google Ads stream request that will retrieve
    # all bidding strategies.
    stream: Iterator[SearchGoogleAdsStreamResponse] = (
        googleads_service.search_stream(
            customer_id=manager_customer_id, query=query
        )
    )

    # Iterates through and prints all of the results in the stream response.
    print(
        "Cross-account bid strategies in manager account: "
        f"{manager_customer_id}"
    )
    response: SearchGoogleAdsStreamResponse
    for response in stream:
        row: GoogleAdsRow
        for row in response.results:
            bs: BiddingStrategy = row.bidding_strategy
            print(
                f"\tID: {bs.id}\n"
                f"\tName: {bs.name}\n"
           _.name}\n"
                f"\tCurrency: {bs.currency_code}\n\n"
            )use_cross_account_bidding_strategy.py
      

Ruby

def list_manager_owned_bidding_strategies(client, manager_customer_id)
  query = <<~QUERY
    SELECT bidding_strategy.id,
           bidding_strategy.name,
           bidding_strategy.type,
           bidding_strategy.currency_code
    FROM bidding_strategy
  QUERY

  responses = client.service.google_ads.search_stream(
    customer_id: manager_customer_id,
    query: query,
  )

  puts "Cross-account bid strategies in manager account #{manager_customer_id}:"
  responses.each do |response|
    response.results.each do |row|
      b = row.bidding_strategy
      puts "ID: #{b.id}"
      puts "Name: #{b.name}"
      puts "Strategy type: #{b.type}"
      puts "Currency: #{bend
  end
enduse_cross_account_bidding_strategy.rb
      

Perl

# Lists all cross-account bidding strategies in a specified manager account.
sub _list_manager_owned_bidding_strategies {
  my ($api_client, $manager_customer_id) = @_;

  # Create a GAQL query that will retrieve all cross-account bidding
  # strategies.
  my $query = "SELECT
                 bidding_strategy.id,
                 bidding_strategy.name,
                 bidding_strategy.type,
                 bidding_strategy.currency_code
               FROM bidding_strategy";

  # Issue a streaming search request, then iterate through and print the
  # results.
  my $search_stream_handler =
    Google::Ads::GoogleAds::Utils::SearchStre>amHandler-new({
     > service = $a>pi_client-GoogleAdsService(),
     > request =
        Google::Ads::GoogleAds::V23::Services::GoogleAdsService::SearchGoogleAdsStreamRequest>
        -new({
          cu>stomerId = $manager_customer_id,
          qu>ery      = $query
        })});

  printf
    "Cross-account bid strategies in manager account $manager_customer_id:\n";
  $se>arch_stream_handler-process_contents(
    sub {
      my $google_ads_row   = shift;
      my $bidding_strateg>y = $google_ads_row-{biddingStrategy};
      printf ">;\tID: $bidding_strategy-{id}\n" .
     >   "\tName: $bidding_strategy-{name}\n" .
    >    "\tStrategy type: $bidding_strategy-{type}>\n" .
        "\tCure}\n\n";
    });
}use_cross_account_bidding_strategy.pl
      

ดูกลยุทธ์การเสนอราคาที่เข้าถึงได้

เมื่อทํางานกับบัญชีลูกค้าที่ใช้กลยุทธ์การเสนอราคาข้ามบัญชี ระบบจะใช้แหล่งข้อมูล AccessibleBiddingStrategy เพื่อแสดงมุมมองอ่านอย่างเดียวของกลยุทธ์การเสนอราคาทั้งหมดที่ลูกค้าปัจจุบันเข้าถึงได้ ซึ่งรวมถึงทั้งกลยุทธ์พอร์ตโฟลิโอที่เป็นของลูกค้าและกลยุทธ์การเสนอราคาข้ามบัญชีที่แชร์กับลูกค้า

ดูกลยุทธ์การเสนอราคาทั้งหมดที่ใช้ได้

หากต้องการเรียกกลยุทธ์การเสนอราคาทั้งหมดที่ลูกค้าปัจจุบันเข้าถึงได้ ให้ค้นหาแหล่งข้อมูล accessible_bidding_strategy โดยตรง โดยค่าเริ่มต้น ผลลัพธ์จะรวมทั้งกลยุทธ์พอร์ตโฟลิโอในบัญชีปัจจุบันและกลยุทธ์การเสนอราคาข้ามบัญชีที่บัญชีดูแลจัดการแชร์

Java

private void listCustomerAccessibleBiddingStrategies(
    GoogleAdsClient googleAdsClient, long clientCustomerId) throws GoogleAdsException {
  try (GoogleAdsServiceClient googleAdsServiceClient =
      googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
    String query =
        "SELECT accessible_bidding_strategy.id, "
            + "accessible_bidding_strategy.name, "
            + "accessible_bidding_strategy.type, "
            + "accessible_bidding_strategy.owner_customer_id, "
            + "accessible_bidding_strategy.owner_descriptive_name "
            + "FROM accessible_bidding_strategy "
        // Uncomment the following WHERE clause to filter results to *only* cross-account bidding
        // strategies shared with the current customer by a manager (and not also include the
        // current customer's portfolio bidding strategies).
        // + "WHERE accessible_bidding_strategy.owner_customer_id != " + clientCustomerId;
        ;

    // Constructs the SearchGoogleAdsStreamRequest.
    SearchGoogleAdsStreamRequest request =
        SearchGoogleAdsStreamRequest.newBuilder()
            .setCustomerId(Long.toString(clientCustomerId))
            .setQuery(query)
            .build();

    // Creates and issues a search Google Ads stream request tha<t will retrieve all accessibl>e
    // bidding strategies.
    ServerStreamSearchGoogleAdsStreamResponse stream =
        googleAdsServiceClient.searchStreamCallable().call(request);

    // Iterates through and prints all of the results in the stream response.
    System.out.printf("All bid strategies accessible by account %d: %n", clientCustomerId);
    for (SearchGoogleAdsStreamResponse response : stream) {
      for (GoogleAdsRow googleAdsRow : response.getResultsList()) {
        AccessibleBiddingStrategy bs = googleAdsRow.getAccessibleBiddingStrategy();
        System.out.printf("  ID: %d%n", bs.getId());
        System.out.printf("  Name: %s%n", bs.getName());
        System.out.printf("  Strategy type: %s%n", bs.getType());
        System.out.printf("  Owner customer ID: %d%n", bs.getOwnerCustomerId());
        Sysption: %s%n", bs.getOwnerDescriptiveName());
        System.out.println();
      }
    }
  }
}UseCrossAccountBiddingStrategy.java
      

C#

/// <summary>
/// Lists all bidding strategies available to specified client customer account. This
/// includes both portfolio bidding strategies owned by the client customer account and
/// cross-account bidding strategies shared by any of its managers.
/// </summary>
/// <param name="cl>ient"The Google A<ds cli>ent./<param
/// param name=&q>uot;customerId"The Google Ads client customer ID for which t<he cal>l is
/// made./param
private void ListCustomerAccessibleBiddingStrategies(GoogleAdsClient client,
    long customerId)
{
    GoogleAdsServiceClient googleAdsServiceClient =
        client.GetService(Services.V23.GoogleAdsService);

    // Create a GAQL query that will retrieve all accessible bidding strategies.
    string query = @"
        SELECT
          accessible_bidding_strategy.resource_name,
          accessible_bidding_strategy.id,
          accessible_bidding_strategy.name,
          accessible_bidding_strategy.type,
          accessible_bidding_strategy.owner_customer_id,
          accessible_bidding_strategy.owner_descriptive_name
        FROM accessible_bidding_strategy";

    // Uncomment the following WHERE clause addition to the query to filter results to
    // *only* cross-account bidding strategies shared with the current customer by a manager
    // (and not also include the current customer's portfolio bidding strategies).
    // query += $" WHERE accessible_bidding_strategy.owner_customer_id != {customerId}";

    // Issue a streaming search request, then iterate through and print the results.
    googleAdsServiceClient.SearchStream(customerId.ToString(), query,
        delegate(SearchGoogleAdsStreamResponse resp)
        {
            Console.WriteLine($"All bid strategies accessible by account {customerId}:");

            foreach (GoogleAdsRow googleAdsRow in resp.Results)
            {
                AccessibleBiddingStrategy biddingStrategy =
                    googleAdsRow.AccessibleBiddingStrategy;

                Console.WriteLine($"\tID: {biddingStrategy.Id}\n" +
                    $"\tName: {biddingStrategy.Name}\n" +
                    $"\tStrategy type: {biddingStrategy.Type.ToString()}\n" +
                    $"\tOwner customer ID: {biddingStrategy.OwnerCustomerId}\n" +
                    $"tegy.OwnerDescriptiveName}\n\n");
            }
        }
    );
}UseCrossAccountBiddingStrategy.cs
      

PHP

private static function listCustomerAccessibleBiddingStrategies(
    GoogleAdsClient $googleAdsClient,
    int $clientCustomerId
) {
    $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
    // Creates a query that retrieves all bidding strategies.
    $query = 'SELECT accessible_bidding_strategy.id, '
          . 'accessible_bidding_strategy.name, '
          . 'accessible_bidding_strategy.type, '
          . 'accessible_bidding_strategy.owner_customer_id, '
          . 'accessible_bidding_strategy.owner_descriptive_name '
          . 'FROM accessible_bidding_strategy '
        // Uncomment the following WHERE clause to filter results to *only* cross-account
        // bidding strategies shared with the current customer by a manager (and not also
        // include the current customer's portfolio bidding strategies).
        // . 'WHERE accessible_bidding_strategy.owner_customer_id != ' . $clientCustomerId
    ;
    // Issues a search stream request.
    /** @var GoogleAdsServerStrea>mDecorator $stream */
    $stream = $googleAdsServiceClient-searchStream(
        SearchGoogleAdsStreamRequest::build($clientCustomerId, $query)
    );

    // Iterates over all rows in all messages and prints the requested field values for
    // each accessible bidding strategy.
    printf(
        "All bid strategies accessible by the customer ID %d:%s",
 >       $clientCustomerId,
        PHP_EOL
    );
    foreach ($stream-iterateAllElements() as $googleAdsRow) {
        /** @var GoogleAdsRow $googleAdsRow */
        printf(
            '  ID: %1$d%2$s  Name: "%3$s"%2$s  Strategy type: "%4$s"%2$s'
            . '>  Owner customer ID: %5$d%2$s  >Owner customer description: "%6$s"%2$s%2$s'>;,
            $googleAdsRow-ge>tAccessibleBiddingStrategy()-getId(),
            PHP_EOL,
    >        $googleAdsRow-getAccess>ibleBiddingStrategy()-getName(),
     >       BiddingStrategyType::nam>e($googleAdsRow-getAccessibleBiddingStrategy()-g>etType()),
            $googleA>dsRow-getAccessibleBiddingStrategy()-getOwneAdsRow-getAccessibleBiddingStrategy()-getOwnerDescriptiveName()
        );
    }
}UseCrossAccountBiddingStrategy.php
      

Python

def list_customer_accessible_bidding_strategies(
    client: GoogleAdsClient, customer_id: str
) -> None:
    """Lists all bidding strategies available to the client account.

    This includes both portfolio bidding strategies owned by account and
    cross-account bidding strategies shared by any of its managers.

    Args:
        client: An initialized GoogleAdsClient instance.
        customer_id: A client customer ID.
    """
    googleads_service: GoogleAdsServiceClient = client.get_service(
        "GoogleAdsService"
    )
    query = """
        SELECT
          accessible_bidding_strategy.id,
          accessible_bidding_strategy.name,
          accessible_bidding_strategy.type,
          accessible_bidding_strategy.owner_customer_id,
          accessible_bidding_strategy.owner_descriptive_name
        FROM accessible_bidding_strategy"""
    # Uncomment the following WHERE clause to filter results to *only*
    # cross-account bidding strategies shared with the current customer by a
    # manager (and not also include the current customer's portfolio
    # bidding strategies).
    #
    # query += f"WHERE accessible_bidding_strategy.owner_customer_id != {customer_id}"

    # Creates and issues a search Google Ads stream request that will retrieve
    # all bidding strategies.
    stream: Iterator[SearchGoogleAdsStreamResponse] = (
        googleads_service.search_stream(customer_id=customer_id, query=query)
    )

    # Iterates through and prints all of the results in the stream response.
    print(f"All bid strategies accessible by account '{customer_id}'\n")
    response: SearchGoogleAdsStreamResponse
    for response in stream:
        row: GoogleAdsRow
        for row in response.results:
            bs: AccessibleBiddingStrategy = row.accessible_bidding_strategy
            print(
                f"\tID: {bs.id}\n"
                f"\tName: {bs.name}\n"
                f"\tStrategy type: {bs.type_.name}\n"
                f&ustomer_id}\n"
                f"\tOwner description: {bs.owner_descriptive_name}\n\n"
            )use_cross_account_bidding_strategy.py
      

Ruby

def list_customer_accessible_bidding_strategies(client, customer_id)
  query = <<~QUERY
    SELECT accessible_bidding_strategy.id,
           accessible_bidding_strategy.name,
           accessible_bidding_strategy.type,
           accessible_bidding_strategy.owner_customer_id,
           accessible_bidding_strategy.owner_descriptive_name
    FROM accessible_bidding_strategy
  QUERY
  # Add the following WHERE clause to filter results to *only*
  # cross-account bidding strategies shared with the current customer by a
  # manager (and not also include the current customer's portfolio bidding
  # strategies).
  # query<< += ~QUERY
  #  WHERE accessible_bidding_strategy.owner_customer_id != #{customer_id}
  # QUERY

  responses = client.service.google_ads.search_stream(
    customer_id: customer_id,
    query: query,
  )

  puts "All bid strategies accessible by account #{customer_id}:"
  responses.each do |response|
    response.results.each do |row|
      b = row.accessible_bidding_strategy
      puts "ID: #{b.id}"
      puts "Name: #{b.name}"
      puts "Strategy type: #{b.type}"
      puts "Owner customer ID: #{b.owner_customer_id}"
      puts "Owner description     puts
    end
  end
enduse_cross_account_bidding_strategy.rb
      

Perl

# Lists all bidding strategies available to specified client customer account.
# This includes both portfolio bidding strategies owned by the client customer
# account and cross-account bidding strategies shared by any of its managers.
sub _list_customer_accessible_bidding_strategies {
  my ($api_client, $customer_id) = @_;

  # Create a GAQL query that will retrieve all accessible bidding strategies.
  my $query = "SELECT
                 accessible_bidding_strategy.resource_name,
                 accessible_bidding_strategy.id,
                 accessible_bidding_strategy.name,
                 accessible_bidding_strategy.type,
                 accessible_bidding_strategy.owner_customer_id,
                 accessible_bidding_strategy.owner_descriptive_name
               FROM accessible_bidding_strategy";

  # Uncomment the following WHERE clause addition to the query to filter results
  # to *only* cross-account bidding strategies shared with the current customer
  # by a manager (and not also include the current customer's portfolio bidding
  # strategies).
  # $query .=
  #   " WHERE accessible_bidding_strategy.owner_customer_id != $customer_id";

  # Issue a streaming search request, then iterate through and print the
  # results.
  my $search_stream_handler =
    Google::Ads::GoogleAds::Uti>ls::SearchStreamHandl>er-new({
    >  service = $api_client-GoogleAdsSe>rvice(),
      request =
        Google::Ads::GoogleAds::V23::Services::GoogleAdsService::SearchGoogleAd>sStreamRequest
        -new(>{
          customerId = $customer_id>,
          query      = $query
        })});

  printf "All bid strategies accessible by account $customer_id:\>n";
  $search_stream_handler-process_contents(
    sub {
      my $google_ads_row   = shift;
      my $b>idding_strategy = $google_ads_row-{accessibleBiddingStrategy};
    >  printf "\tID: $bidding_strategy-{id}\n>" .
        "\tName: $bidding_strategy-{name}\>n" .
        "\tStrategy type: $bidding_strategy-{>type}\n" .
        "\tOwner customer ID: $bidding_strategy-{o>wnerCustomerId}\n" .
        &quoegy-{ownerDescriptiveName}\n\n";
    });
}use_cross_account_bidding_strategy.pl
      

ดูข้อมูลเกี่ยวกับแคมเปญที่เฉพาะเจาะจง

นอกจากนี้ คุณยังดึงข้อมูลช่อง bidding_strategy และ accessible_bidding_strategy ได้เมื่อค้นหาแคมเปญ เมื่อใช้ campaign ในคำสั่ง FROM ของคําค้นหา แคมเปญที่ตรงกันจะเข้าร่วมแหล่งข้อมูล bidding_strategy และ accessible_bidding_strategy ที่เชื่อมโยงโดยปริยาย

ตัวอย่างเช่น การค้นหาต่อไปนี้จะดึงข้อมูลแคมเปญและช่องที่ใช้งานอยู่ทั้งหมดของแหล่งข้อมูล bidding_strategy และ accessible_bidding_strategy ที่เชื่อมโยง

GAQL

SELECT campaign.id,
  campaign.name,
  campaign.bidding_strategy,
  campaign.bidding_strategy_type,
  accessible_bidding_strategy.id,
  accessible_bidding_strategy.name,
  accessible_bidding_strategy.type,
  accessible_bidding_strategy.owner_customer_id,
  accessible_bidding_strategy.owner_descriptive_name,
  bidding_strategy.name,
  bidding_strategy.type
FROM campaign
WHERE campaign.status != REMOVED

แนบกับแคมเปญ

คุณสามารถแนบกลยุทธ์การเสนอราคาข้ามบัญชีกับแคมเปญได้โดยการตั้งค่า bidding_strategy ของกลยุทธ์การเสนอราคาข้ามบัญชีเป็นชื่อทรัพยากร เฉพาะผู้จัดการที่เป็นเจ้าของกลยุทธ์การเสนอราคาข้ามบัญชี (หรือผู้จัดการของผู้จัดการเหล่านั้น) เท่านั้นที่จะแนบกลยุทธ์ดังกล่าวกับแคมเปญได้ ดังนั้นการเรียก API ที่แนบกลยุทธ์การเสนอราคาข้ามบัญชีกับแคมเปญต้องใช้ login-customer-id ของผู้จัดการที่มีสิทธิ์เข้าถึงกลยุทธ์การเสนอราคาที่เหมาะสม

Java

private void attachCrossAccountBiddingStrategyToCampaign(
    GoogleAdsClient googleAdsClient,
    long clientCustomerId,
    long campaignId,
    String biddingStrategyResourceName)
    throws GoogleAdsException {

  try (CampaignServiceClient campaignServiceClient =
      googleAdsClient.getLatestVersion().createCampaignServiceClient()) {
    Campaign campaign =
        Campaign.newBuilder()
            .setResourceName(ResourceNames.campaign(clientCustomerId, campaignId))
            .setBiddingStrategy(biddingStrategyResourceName)
            // Declares whether this campaign serves political ads targeting the EU.
            .setContainsEuPoliticalAdvertising(DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING)
            .build();
    CampaignOperation operation =
        CampaignOperation.newBuilder()
            .setUpdate(campaign)
            .setUpdateMask(FieldMasks.allSetFieldsOf(campaign))
            .build();
    // Sends the operation in a mutate request.
    MutateCampaignsResponse response =
        campaignServiceClient.mutateCampaigns(
            Long.toString(clientCustomerId), ImmutableList.of(operation));

    MutateCampaignResult mutateCampaignResult = response.getResults(0);
    // Prints the resource name of the updated campaign.
    System.out.printf(
        "Updated campaign with resource name: '%s'.%n", mutateCampaignResult.getResoddingStrategy.java
      

C#

/// <summary>
/// Attaches a specified cross-account bidding strategy to a campaign owned by a specified
/// client customer account.
/// </summary>
/// <param name="cl>ient"The Google A<ds cli>ent./<param
/// param name=&q>uot;customerId"The Google Ads client customer ID for which t<he cal>l is
</// made./param
/// par>am name="campaignId"The ID of the campaign owned by the customer ID to which the
/// cross-account bidd<ing st>rateg<y will be attached./param
/// param name>="biddingStrategyResourceName"A cross-acc<ount b>idding strategy resource
/// name./param
private void AttachCrossAccountBiddingStrategyToCampaign(GoogleAdsClient client,
    long customerId, long campaignId, string biddingStrategyResourceName)
{
    CampaignServiceClient campaignServiceClient =
        client.GetService(Services.V23.CampaignService);

    Campaign campaign = new Campaign
    {
        ResourceName = ResourceNames.Campaign(customerId, campaignId),
        BiddingStrategy = biddingStrategyResourceName
    };

    // Mutate the campaign and print the resource name of the updated campaign.
    MutateCampaignsResponse mutateCampaignsResponse =
        campaignServiceClient.MutateCampaigns(customerId.ToString(), new[]
        {
            new CampaignOperation
            {
                Update = campaign,
                UpdateMask = FieldMasks.AllSetFieldsOf(campaign)
            }
        });

    Console.WriteLine("Updated campaign with resource name " +
        $"'{mrst().ResourceName}'.");
}UseCrossAccountBiddingStrategy.cs
      

PHP

private static function attachCrossAccountBiddingStrategyToCampaign(
    GoogleAdsClient $googleAdsClient,
    int $clientCustomerId,
    int $campaignId,
    string $biddingStrategyResourceName
) {
    // Creates a campaign using the specified campaign ID and the bidding strategy ID.
    // Note that a cross-account bidding strategy's resource name should use the
    // client's customer ID when attaching it to a campaign, not that of the manager that owns
    // the strategy.
    $campaign = new Campaign([
        'reso>urce_name' = ResourceNames::forCampaign($clientCustomerId, $campaignId),
        '>;bidding_strategy' = $biddingStrategyResourceName
    ]);

    // Constructs an operation that will update the campaign with the specified resource name,
    // using the FieldMasks utility to derive the update mask. This mask tells the Google Ads
    // API which attributes of the campaign you want to change.
    $campaignOperation = new CampaignOperation();>
    $campaignOperation-setUpdate($campaign);>
    $campaignOperation-setUpdateMask(FieldMasks::allSetFieldsOf($campaign));

    // Issues a mutate request to update the campaign.
    $campaignServiceCl>ient = $googleAdsClient-getCampaignServiceClient();
    $response => $campaignServiceClient-mutateCampaigns(
        MutateCampaignsRequest::build($clientCustomerId, [$campaignOperation])
    );

    // Prints information about the updated campaign.
    printf(
        "Updated campaign with resource name:> '%s'.%s>",
        $response-getResults()[0]-g    );
}UseCrossAccountBiddingStrategy.php
      

Python

def attach_cross_account_bidding_strategy_to_campaign(
    client: GoogleAdsClient,
    customer_id: str,
    campaign_id: str,
    bidding_strategy_resource_name: str,
) -> None:
    """Attaches the cross-account bidding strategy to the given campaign.

    Args:
        client: An initialized GoogleAdsClient instance.
        customer_id: A client customer ID.
        campaign_id: The ID of an existing campaign in the client customer's
            account.
        bidding_strategy_resource_name: The ID of a bidding strategy
    """
    campaign_service: CampaignServiceClient = client.get_service(
        "CampaignService"
    )
    campaign_operation: CampaignOperation = client.get_type("CampaignOperation")
    campaign: Campaign = campaign_operation.update
    campaign.resource_name = campaign_service.campaign_path(
        customer_id, campaign_id
    )
    campaign.bidding_strategy = bidding_strategy_resource_name
    client.copy_from(
        campaign_operation.update_mask,
        protobuf_helpers.field_mask(None, campaign._pb),
    )

    # Sends the operation in a mutate request.
    response: MutateCampaignsResponse = campaign_service.mutate_campaigns(
        customer_id=customer_id, operations=[campaign_operation]
    )

    # Prints the resource name of the updated campaign.
    print(
        "Updated campaign with resource namse.results[0].resource_name}'"
    )use_cross_account_bidding_strategy.py
      

Ruby

def attach_cross_account_bidding_strategy_to_campaign(
  client,
  customer_id,
  campaign_id,
  bidding_strategy_resource_name)
  operation = client.operation.update_resource.campaign(
    client.path.campaign(customer_id, campaign_id)) do |c|
    c.bidding_strategy = bidding_strategy_resource_name
  end

  # Sends the operation in a mutate request.
  response = client.service.campaign.mutate_campaigns(
    customer_id: customer_id,
    operations: [operation],
  )

  puts "Updated campaign with resource name: " \
    "`#{response.results.first.resou_bidding_strategy.rb
      

Perl

# Attaches a specified cross-account bidding strategy to a campaign owned by a
# specified client customer account.
sub _attach_cross_account_bidding_strategy_to_campaign {
  my ($api_client, $customer_id, $campaign_id, $bidding_strategy_resource_name)
    = @_;

  my $campaign = Google::Ads::GoogleAds::V23::Resources::Campaign->new({
      resourceName =>
        Google::Ads::GoogleAds::V23::Utils::ResourceNames::campaign(
        $customer_id, $campaign_id
        ),
      biddingStrategy => $bidding_strategy_resource_name
    });

  my $campaign_operation =
    Google::Ads::GoogleAds::V23::Services::CampaignService::CampaignOperation->
    new({
      update     => $campaign,
      updateMask => all_set_fields_of($campaign)});

  my $campaigns_response = $api_client->CampaignService()->mutate({
      customerId => $customer_id,
      operations => [$campaign_operation]});

  printf "Updated campaign with resource name '%s'.\n",
    $c>ampaigns_response-{results}[0idding_strategy.pl
      

นํากลยุทธ์การเสนอราคาออก

หากต้องการยกเลิกการเชื่อมโยงกลยุทธ์การเสนอราคาข้ามบัญชีกับแคมเปญ ให้อัปเดตแคมเปญให้ใช้กลยุทธ์การเสนอราคาอื่น ตั้งค่าbidding_strategy ช่องของพอร์ตโฟลิโอนั้นเพื่อใช้กลยุทธ์พอร์ตโฟลิโออื่นหรือใช้กลยุทธ์การเสนอราคามาตรฐานแทน

หากยกเลิกการลิงก์บัญชีลูกค้าจากบัญชีดูแลจัดการ คุณจะเข้าถึงกลยุทธ์การเสนอราคาข้ามบัญชีที่ผู้จัดการแชร์ไม่ได้อีกต่อไป แคมเปญของลูกค้าที่ตั้งค่าให้ใช้กลยุทธ์การเสนอราคาดังกล่าวจะหยุดแสดงและต้องอัปเดตให้ใช้กลยุทธ์การเสนอราคาอื่น