カスタム入札の実装

ディスプレイとVideo 360 API でカスタム入札を完全に管理 あります。カスタム入札アルゴリズムを作成し、アップロードと検証を行うことができます。 入札機能としてリソースに特定のアルゴリズムを 説明します。

このページでは、カスタム入札アルゴリズムを作成、更新、割り当てする方法について説明します。 ディスプレイ &ビデオ 360 でVideo 360 API。各セクションにコードサンプルがあります。

カスタム入札アルゴリズムを作成する

CustomBiddingAlgorithm オブジェクトは、個々のオブジェクトを表す 入札戦略で使用するために広告申込情報に割り当てることができるアルゴリズムです。この アルゴリズムの詳細が格納されています。 customBiddingAlgorithmTypeentityStatusreadinessStatesuspensionState 生成されたモデルに基づいて比較できます。新しい CustomBiddingScriptCustomBiddingAlgorithmRules オブジェクトが、そのリソースの子リソースとして 使用できます。

スクリプトベースのカスタム入札アルゴリズムの作成方法の例を次に示します。

Java

// Create the custom bidding algorithm structure.
CustomBiddingAlgorithm customBiddingAlgorithm =
    new CustomBiddingAlgorithm()
        .setAdvertiserId(advertiser-id)
        .setDisplayName(display-name)
        .setEntityStatus("ENTITY_STATUS_ACTIVE")
        .setCustomBiddingAlgorithmType("SCRIPT_BASED");

// Configure the create request.
CustomBiddingAlgorithms.Create request =
    service.customBiddingAlgorithms().create(customBiddingAlgorithm);

// Create the custom bidding algorithm.
CustomBiddingAlgorithm response = request.execute();

// Display the new custom bidding algorithm name.
System.out.printf(
    "Custom bidding algorithm %s was created.%n",
    response.getName()
);

Python

# Create a custom bidding algorithm object.
custom_bidding_algorithm_obj = {
    'advertiserId': advertiser-id,
    'displayName': display-name,
    'entityStatus': 'ENTITY_STATUS_ACTIVE',
    'customBiddingAlgorithmType': 'SCRIPT_BASED'
}

# Create the custom bidding algorithm.
response = service.customBiddingAlgorithms().create(
    body=custom_bidding_algorithm_obj
).execute()

# Display the new custom bidding algorithm.
print(f'The following Custom Bidding Algorithm was created: {response}')

PHP

// Create a custom bidding algorithm object.
$customBiddingAlgorithm =
    new Google_Service_DisplayVideo_CustomBiddingAlgorithm();
$customBiddingAlgorithm->setAdvertiserId(advertiser-id);
$customBiddingAlgorithm->setDisplayName(display-name);
$customBiddingAlgorithm->setEntityStatus('ENTITY_STATUS_ACTIVE');
$customBiddingAlgorithm->setCustomBiddingAlgorithmType('SCRIPT_BASED');

// Create the custom bidding algorithm.
$result =
    $this->service->customBiddingAlgorithms->create($customBiddingAlgorithm);

// Display the new custom bidding algorithm name.
printf('Custom Bidding Algorithm %s was created.\n', $result['name']);

アルゴリズムのアクセスを管理する

カスタム入札アルゴリズムは、パートナーまたは広告主が所有できます。アルゴリズム そのパートナーとすべての子は、そのパートナーが所有するコンテンツにアクセスし、変更できます。 sharedAdvertiserIds フィールドに指定されている広告主。 広告主が所有するアルゴリズムは、その広告主からアクセスして変更できます。 広告主とその親パートナーと共有され、他の広告主と共有することはできません。

単一の広告主に対してアルゴリズムのみを使用する場合は、 advertiserId で広告主を所有者として指定します。 それ以外の場合は、広告主の親パートナーを partnerId フィールドを指定し、 sharedAdvertiserIds フィールド。

アップロード アルゴリズムのロジック

次に、カスタム入札アルゴリズムのタイプに応じて、 script または rules オブジェクトのいずれかであり、 アルゴリズムで使用するロジックを提供します。

スクリプトをアップロードする

スクリプトベースのカスタム入札アルゴリズムでは、ユーザー提供の スクリプトを使用してインプレッションの価値を評価します。 シンプルなスクリプトのサンプルと 詳細フィールドディスプレイと動画 360 ヘルプセンターをご覧ください。

以降のセクションでは、新しいスクリプトまたは更新されたスクリプトをカスタム 入札アルゴリズム

スクリプト リソースのロケーションを取得する

まず、カスタム入札で利用可能なリソース ロケーションを取得します。 アルゴリズム リソースです。 customBiddingAlgorithms.uploadScript メソッドを使用します。この リクエストは、次の値を含む CustomBiddingScriptRef オブジェクトを返します。 リソース名。Google Chat では 指定した場所にスクリプト ファイルをアップロードします。 指定します。次に、カスタム入札スクリプトの参照オブジェクトを使用して、 スクリプト リソースを作成します

使用可能なリソース ロケーションを取得する方法の例を次に示します。

Java

// Retrieve a usable custom bidding script
// reference.
CustomBiddingScriptRef scriptRef =
    service
        .customBiddingAlgorithms()
        .uploadScript(custom-bidding-algorithm-id)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display the custom bidding script reference resource path.
System.out.printf(
    "The script can be uploaded to the following resource path: %s%n",
    scriptRef.getResourceName()
);

Python

# Retrieve a usable custom bidding script reference
# object.
custom_bidding_script_ref = service.customBiddingAlgorithms().uploadScript(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id
).execute()

# Display the new custom bidding script reference object.
print('The following custom bidding script reference object was retrieved:'
      f'{custom_bidding_script_ref}')

PHP

// Set parent advertiser ID of custom bidding
// algorithm in optional parameters array for request.
$optParams = array('advertiserId' => advertiser-id);

// Retrieve a usable custom bidding script reference.
$scriptRefResponse = $this->service->customBiddingAlgorithms->uploadScript(
    custom-bidding-algorithm-id,
    $optParams
);

// Display the new custom bidding script reference object.
printf(
    'The script can be uploaded to the following resource path: %s\n',
    $scriptRefResponse->getResourceName()
);

スクリプト ファイルをアップロードする

使用可能なリソースのロケーションを取得したら、そこにスクリプト ファイルをアップロードします。 ディスプレイ &ビデオ 360 で動画 360 システム media.upload メソッドを使用します。このメソッドは、 シンプル アップロード(クエリ パラメータが必要) uploadType=media

次に、取得したカスタム ファイルを指定して、スクリプト ファイルをアップロードする方法を紹介します。 入札スクリプトの参照オブジェクト:

Java

// Create media object.
GoogleBytestreamMedia media = new GoogleBytestreamMedia();
media.setResourceName(resource-name);

// Create input stream for the script file.
InputStreamContent scriptFileStream =
    new InputStreamContent(
        null, new FileInputStream(script-path));

// Create media.upload request.
Media.Upload uploadRequest =
        service
            .media()
            .upload(
                resource-name,
                media,
                scriptFileStream);

// Retrieve uploader from the request and set it to us a simple
// upload request.
MediaHttpUploader uploader = uploadRequest.getMediaHttpUploader();
uploader.setDirectUploadEnabled(true);

// Execute the upload using an Upload URL with the destination resource
// name.
uploader
    .upload(
        new GenericUrl(
            "https://displayvideo.googleapis.com/upload/media/"
                + resource-name));

Python

# Create a media upload object.
media = MediaFileUpload(script-path)

# Create upload request.
upload_request = service.media().upload(
    resourceName=resource-name, media_body=media)

# Override response handler to expect null response.
upload_request.postproc = HttpRequest.null_postproc

# Upload script to resource location given in retrieved custom bidding
# script reference object.
upload_request.execute()

PHP

// Create a media object.
$mediaBody = new Google_Service_DisplayVideo_GoogleBytestreamMedia();
$mediaBody->setResourceName(resource-name);

// Set parameters for upload request.
$optParams = array(
    'data' => file_get_contents(script-path),
    'uploadType' => 'media',
    'resourceName' => resource-name
);

// Upload script file to given resource location.
$this->service->media->upload(
    resource-name,
    $mediaBody,
    $optParams
);

cURL

curl --request POST 'https://displayvideo.googleapis.com/upload/media/resource-name?uploadType=media' 
  -H 'authorization: Bearer access-token'
  -H 'Content-Type: text/plain'
  --data-binary @script-path

スクリプト オブジェクトを作成する

スクリプト ファイルをアップロードしたら、 customBiddingAlgorithms.scripts.create メソッド「 リクエストで渡される CustomBiddingScript オブジェクトは、 割り当てられた値として CustomBiddingScriptRef オブジェクトを含める script フィールドの値。これにより、アップロードされたアセットと 新しいスクリプト リソースに置き換えます。

スクリプト リソースの作成方法の例を次に示します。

Java

// Create the custom bidding script structure.
CustomBiddingScript customBiddingScript =
    new CustomBiddingScript()
        .setScript(custom-bidding-script-ref);

// Create the custom bidding script.
CustomBiddingScript response =
    service
        .customBiddingAlgorithms()
        .scripts()
        .create(custom-bidding-algorithm-id, customBiddingScript)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display the new script resource name
System.out.printf(
    "The following script was created: %s%n",
    response.getName());

Python

# Create a custom bidding script object.
script_obj = {
    'script': custom-bidding-script-ref
}

# Create the custom bidding script.
response = service.customBiddingAlgorithms().scripts().create(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id,
    body=script_obj).execute()

# Display the new custom bidding script object.
print(f'The following custom bidding script was created: {response}')

PHP

// Create the custom bidding script object.
$customBiddingScript =
    new Google_Service_DisplayVideo_CustomBiddingScript();
$customBiddingScript->setScript(custom-bidding-script-ref);

// Set parameters for create script request.
$optParams = array(
    'advertiserId' => advertiser-id
);

// Create the custom bidding script.
$result = $this->service->customBiddingAlgorithms_scripts->create(
    custom-bidding-algorithm-id,
    $customBiddingScript,
    $optParams
);

// Display the new script resource name.
printf('The following script was created: %s.\n', $result->getName());

カスタム入札スクリプトのリソースを作成すると、ディスプレイ &ビデオ 360 で動画 360 は インプレッションのスコア付けに使用できることを確認します。 スクリプト オブジェクトの state フィールド。新しいスクリプトが承認されると、カスタム 入札アルゴリズムが、スクリプトを使用してインプレッション値のスコア付けを開始します。この 更新は直ちに行われます。更新が終わる前にアルゴリズムを 新しいスクリプト リソースを作成します。

アップロード ルール

ルールベースのカスタム入札アルゴリズムは、 AlgorithmRules オブジェクトを使用して、インプレッションの価値を評価します。

AlgorithmRules オブジェクトが JSON ファイルでアップロードされ、 カスタム入札アルゴリズムに関連付けた CustomBiddingAlgorithmRules オブジェクト。

ルールのリソース ロケーションを取得する

まず、カスタム入札で利用可能なリソース ロケーションを取得します。 アルゴリズム リソースです。 customBiddingAlgorithms.uploadRules メソッドを使用します。この リクエストが CustomBiddingAlgorithmsRulesRef オブジェクトを返す リソース名に置き換えます。ルールをアップロードできます。 file をリソース名で指定された場所に移動します。その後 カスタム入札アルゴリズムのルール参照オブジェクトを使用してルールを作成する 使用します

使用可能なリソース ロケーションを取得する方法の例を次に示します。

Java

// Create the custom bidding algorithm structure.
CustomBiddingAlgorithmRulesRef rulesRef =
    service
        .customBiddingAlgorithms()
        .uploadRules(custom-bidding-algorithm-id)
        .setAdvertiserId(advertiser-id)
        .execute();

System.out.printf(
    "The rules can be uploaded to the following resource path: %s%n",
    rulesRef.getResourceName()
);

Python

# Retrieve a usable custom bidding algorithm rules reference
# object.
custom_bidding_algorithm_rules_ref = service.customBiddingAlgorithms().uploadRules(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id
).execute()

# Display the new custom bidding algorithm rules reference object.
print('The following custom bidding algorithm rules reference object was retrieved:'
      f' {custom_bidding_algorithm_rules_ref}')

PHP

// Set parent advertiser ID of custom bidding algorithm
// in optional parameters array for request.
$optParams = array('advertiserId' => advertiser-id);

// Retrieve a usable custom bidding algorithm rules reference.
$rulesRefResponse = $this->service->customBiddingAlgorithms->uploadRules(
    custom-bidding-algorithm-id,
    $optParams
);

// Display the new custom bidding algorithm rules reference object resource path.
printf(
    'The rules can be uploaded to the following resource path: %s\n',
    $rulesRefResponse->getResourceName()
);

AlgorithmRules ファイルをアップロード

使用可能なリソース ロケーションを取得したら、そのロケーションにルールファイルをアップロードします。 ディスプレイ &ビデオ 360 で動画 360 システム media.upload メソッドを使用します。このメソッドは、 シンプル アップロード(クエリ パラメータが必要) uploadType=media

次の例は、取得された AlgorithmRules ファイルをアップロードする方法です。 カスタム入札アルゴリズムのルール参照オブジェクト:

Java

// Create media object.
GoogleBytestreamMedia media = new GoogleBytestreamMedia();
media.setResourceName(resource-name);

// Create input stream for the rules file.
InputStreamContent rulesFileStream =
    new InputStreamContent(
        null, new FileInputStream(rules-file-path));

// Create media.upload request.
 Media.Upload uploadRequest =
    service
        .media()
        .upload(
            resource-name,
            media,
            rulesFileStream);

// Retrieve uploader from the request and set it to us a simple
// upload request.
MediaHttpUploader uploader = uploadRequest.getMediaHttpUploader();
uploader.setDirectUploadEnabled(true);

// Execute the upload using an Upload URL with the destination resource
// name.
uploader
    .upload(
        new GenericUrl(
            "https://displayvideo.googleapis.com/upload/media/"
                + resource-name));

Python

# Create a media upload object.
media = MediaFileUpload(rules-file-path)

# Create upload request.
upload_request = service.media().upload(
    resourceName=resource-name, media_body=media)

# Override response handler to expect null response.
upload_request.postproc = HttpRequest.null_postproc

# Upload rules file to resource location given in retrieved custom bidding
# algorithm rules reference object.
upload_request.execute()

PHP

// Create a media object.
$mediaBody = new Google_Service_DisplayVideo_GoogleBytestreamMedia();
$mediaBody->setResourceName(resource-name);

// Set parameters for upload request.
$optParams = array(
    'data' => file_get_contents(rules-file-path),
    'uploadType' => 'media',
    'resourceName' => resource-name
);

// Upload rules file to given resource location.
$this->service->media->upload(
    resource-name,
    $mediaBody,
    $optParams
);

cURL

curl --request POST 'https://displayvideo.googleapis.com/upload/media/resource-name?uploadType=media' 
  -H 'authorization: Bearer access-token'
  -H 'Content-Type: text/plain'
  --data-binary @rules-file-path

ルール オブジェクトを作成する

AlgorithmRules JSON ファイルをアップロードしたら、カスタム入札を作成します アルゴリズム ルール リソースに customBiddingAlgorithms.rules.create メソッドを使用します。「 リクエストで渡される CustomBiddingAlgorithmRules オブジェクトは、 CustomBiddingAlgorithmRulesRef オブジェクトのみを rules フィールドに割り当てられた値。これにより、 新しい rules リソースを含む AlgorithmRules JSON ファイルをアップロードしました。

ルールリソースの作成方法の例を次に示します。

Java

// Create the custom bidding algorithm rules structure.
CustomBiddingAlgorithmRules customBiddingAlgorithmRules =
    new CustomBiddingAlgorithmRules()
        .setRules(custom-bidding-algorithm-rules-ref);

// Create the rules resource.
CustomBiddingAlgorithmRules response =
    service
        .customBiddingAlgorithms()
        .rules()
        .create(custom-bidding-algorithm-id, customBiddingAlgorithmRules)
        .setAdvertiserId(advertiser-id)
        .execute();

// Display the new rules resource name.
System.out.printf(
    "The following custom bidding algorithm rules object was created: %s%n",
    response.getName());

Python

# Create the custom bidding algorithm rules object.
rules_obj = {
    'rules': custom-bidding-algorithm-rules-ref
}

# Create the rules resource.
response = service.customBiddingAlgorithms().rules().create(
    customBiddingAlgorithmId=custom-bidding-algorithm-id,
    advertiserId=advertiser-id,
    body=rules_obj).execute()

# Display the new custom bidding algorithm rules object.
print(f'The following custom bidding algorithm rules resource was created: {response}')

PHP

// Create the custom bidding algorithm rules object.
$customBiddingAlgorithmRules =
    new Google_Service_DisplayVideo_CustomBiddingAlgorithmRules();
$customBiddingAlgorithmRules->setRules(custom-bidding-algorithm-rules-ref);

// Set parameters for create rules request.
$optParams = array(
    'advertiserId' => advertiser-id
);

// Create the custom bidding algorithm rules resource.
$result = $this->service->customBiddingAlgorithms_rules->create(
    custom-bidding-algorithm-id,
    $customBiddingAlgorithmRules,
    $optParams
);

// Display the new custom bidding algorithm rules resource name.
printf('The following rules resource was created: %s.\n', $result->getName());

ルールリソースを作成すると、動画 360 はルールセットを処理して、 インプレッションのスコア付けに使用できることを確認します状態を取得する ルール オブジェクトの state フィールドを使用します。 新しいルールが承認されると、カスタム入札アルゴリズムで ルールを使用してインプレッション値をすぐにスコア付けします。

ルールが拒否された場合は、ルールから拒否の理由を取得します。 オブジェクトの error です。不承認となった場合は、 AlgorithmRules オブジェクトを使用してエラーを修正し、アップロード処理を最初からやり直します。 ルール参照オブジェクトの取得から取得できます。

カスタム入札アルゴリズムの割り当て

カスタム入札アルゴリズムを作成したら、承認されたロジックをアップロードして、要件を満たします。 必要な要件を満たしたら、カスタムのアラートを 入札アルゴリズムを広告申込情報または広告掲載オーダーの入札戦略にマッピングします。

カスタム入札アルゴリズムは 費用を最大化し 「BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO」を割り当てることで、掲載結果目標の入札戦略を最適化できます カスタム入札アルゴリズム IDperformanceGoalType および customBiddingAlgorithmId フィールド。 入札戦略によっては、他の入札パラメータも使用できます。 必要ありません。

「予算の最大化」入札戦略を使用するように広告申込情報を更新する例 任意のカスタム入札アルゴリズムで戦略を練ることができます。

Java

// Create the line item structure.
LineItem lineItem = new LineItem();

// Create and set the bidding strategy structure.
BiddingStrategy biddingStrategy = new BiddingStrategy();
MaximizeSpendBidStrategy maxSpendBidStrategy =
    new MaximizeSpendBidStrategy()
        .setPerformanceGoalType(
            "BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO")
        .setCustomBiddingAlgorithmId(custom-bidding-algorithm-id);
biddingStrategy.setMaximizeSpendAutoBid(maxSpendBidStrategy);
lineItem.setBidStrategy(biddingStrategy);

// Configure the patch request and set update mask to only update
// the bid strategy.
LineItems.Patch request =
    service
        .advertisers()
        .lineItems()
        .patch(advertiser-id, line-item-id, lineItem)
        .setUpdateMask("bidStrategy");

// Update the line item.
LineItem response = request.execute();

// Display the custom bidding algorithm ID used in the new
// bid strategy.
System.out.printf(
    "LineItem %s now has a bid strategy utilizing custom "
        + "bidding algorithm %s%n",
    response.getName(),
    response
        .getBidStrategy()
        .getMaximizeSpendAutoBid()
        .getCustomBiddingAlgorithmId());

Python

# Create the new bid strategy object.
bidding_strategy = {
    'maximizeSpendAutoBid': {
        'performanceGoalType':
            'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO',
        'customBiddingAlgorithmId': custom-bidding-algorithm-id
    }
}

# Create a line item object assigning the new bid strategy.
line_item_obj = {'bidStrategy': bidding_strategy}

# Update the line item with a new bid strategy.
response = service.advertisers().lineItems().patch(
    advertiserId=advertiser-id,
    lineItemId=line-item-id,
    updateMask='bidStrategy',
    body=line_item_obj).execute()

# Display the line item's new bid strategy
print(f'Line Item {response["name"]} is now using the following bid'
     f' strategy: {response["bidStrategy"]}.')

PHP

// Create the line item structure.
$lineItem = new Google_Service_DisplayVideo_LineItem();

// Create and set the bidding strategy structure.
$biddingStrategy =  new Google_Service_DisplayVideo_BiddingStrategy();
$maximizeSpendBidStrategy =
    new Google_Service_DisplayVideo_MaximizeSpendBidStrategy();
$maximizeSpendBidStrategy->setPerformanceGoalType(
    'BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO'
);
$maximizeSpendBidStrategy->setCustomBiddingAlgorithmId(
    custom-bidding-algorithm-id
);
$biddingStrategy->setMaximizeSpendAutoBid($maximizeSpendBidStrategy);
$lineItem->setBidStrategy($biddingStrategy);

// Set update mask.
$optParams = array('updateMask' => 'bidStrategy');

// Update the line item.
$result = $this->service->advertisers_lineItems->patch(
    advertiser-id,
    line-item-id,
    $lineItem,
    $optParams
);

// Display the custom bidding algorithm ID used in the new bid strategy.
printf(
    'Line Item %s now has a bid strategy utilizing custom bidding algorithm %s.\n',
    $result['name'],
    $result['bidStrategy']['maximizeSpendBidStrategy']['customBiddingAlgorithmId']
);