Anuncios gráficos y La API de Video 360 te permite administrar completamente las ofertas personalizadas de Google Cloud. Puedes crear algoritmos de ofertas personalizadas, subir y verificar secuencias de comandos individuales y asignar un algoritmo específico a un recurso como sus ofertas de administración de amenazas.
En esta página, se describe cómo crear, actualizar y asignar algoritmos de ofertas personalizadas. con las campañas de Display y API de Video 360. En cada sección, se proporciona una muestra de código.
Crea un algoritmo de ofertas personalizadas
Un objeto CustomBiddingAlgorithm
representa a una persona
que puede asignar a una línea de pedido para usarla en su estrategia de oferta. Esta
tiene detalles sobre el algoritmo, como
customBiddingAlgorithmType
y
entityStatus
, así como el
readinessState
y suspensionState
para
el modelo generado por cada anunciante relevante. Puedes crear
CustomBiddingScript
y
objetos CustomBiddingAlgorithmRules
como recursos secundarios del
algoritmo para usar.
A continuación, se incluye un ejemplo de cómo crear un algoritmo de ofertas personalizadas basadas en secuencias de comandos:
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']);
Administra el acceso al algoritmo
Los algoritmos de ofertas personalizadas pueden ser propiedad de un socio o un anunciante. Algoritmos
que son propiedad de un socio pueden acceder a ellos y modificarlos
anunciantes enumerados en el campo sharedAdvertiserIds
.
El anunciante puede acceder a los algoritmos que son propiedad de un anunciante y modificarlos.
anunciante y su socio principal, pero no se pueden compartir con otros anunciantes.
Si solo usas el algoritmo para un anunciante, asigna el
al anunciante como propietario con el campo advertiserId
.
De lo contrario, asigne al socio superior de los anunciantes como el propietario con el
partnerId
y otorgar acceso a los anunciantes con el
sharedAdvertiserIds
.
Subir la lógica del algoritmo
Según el tipo de algoritmo de ofertas personalizadas, deberás crear un objeto script o rules en el que puedes proporcionan la lógica que debe usar el algoritmo.
Subir una secuencia de comandos
Los algoritmos de ofertas personalizadas basadas en secuencias de comandos secuencias de comandos para evaluar el valor de una impresión. Ejemplos de secuencias de comandos simples y una lista de los campos avanzados están disponibles en la Anuncios gráficos y Centro de ayuda de Video 360.
Las siguientes secciones te enseñan cómo agregar una secuencia de comandos nueva o actualizada a una secuencia el algoritmo de ofertas.
Recupera la ubicación de un recurso de secuencia de comandos
Primero, recuperar una ubicación de recursos disponible en la oferta personalizada
recurso de algoritmo con el
customBiddingAlgorithms.uploadScript
. Esta
la solicitud muestra un objeto CustomBiddingScriptRef
con un
nombre del recurso. Puedes
sube el archivo de secuencia de comandos a la ubicación indicada por la
el nombre del recurso. A continuación, usa el objeto de referencia de la secuencia de comandos de ofertas personalizadas para
crea tu recurso de secuencia de comandos.
Este es un ejemplo de cómo recuperar una ubicación de recurso disponible:
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()
);
Subir un archivo de secuencia de comandos
Después de recuperar la ubicación de un recurso disponible, sube tu archivo de secuencia de comandos a ese
ubicación en la Red de Display y el sistema de video 360 con el
media.upload
. Este método admite un
carga simple que requiere el parámetro de consulta
uploadType=media
Este es un ejemplo de cómo subir un archivo de secuencia de comandos según un valor personalizado recuperado objeto de referencia de la secuencia de comandos de licitación:
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
Crea un objeto de secuencia de comandos
Una vez que se suba el archivo de secuencia de comandos, cree un recurso de secuencia de comandos de licitación personalizada con
Usa el método customBiddingAlgorithms.scripts.create
. El
El objeto CustomBiddingScript
que se pasa en la solicitud solo debe
incluye el objeto CustomBiddingScriptRef
como el
del campo script
. De esta manera, se asocia el flujo de
de secuencia de comandos con el nuevo recurso de secuencia de comandos.
Este es un ejemplo de cómo crear un recurso de secuencia de comandos:
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());
Una vez que crees un recurso de secuencia de comandos de ofertas personalizadas, Display & Video 360 procesa los
secuencia de comandos para asegurarse de que se pueda usar correctamente para puntuar las impresiones.
Recupera el estado de este procesamiento a través de los objetos de la secuencia de comandos
state
. Una vez que aceptes la nueva secuencia de comandos,
el algoritmo de ofertas comienza a usar la secuencia de comandos para puntuar los valores de impresión. Esta
se realice de inmediato, así que asegúrate
de actualizar el algoritmo antes de
crear un nuevo recurso de secuencia de comandos.
Subir reglas
Los algoritmos de ofertas personalizadas basados en reglas emplean la lógica proporcionada en un
AlgorithmRules
para evaluar el valor de una impresión.
Los objetos AlgorithmRules
se suben en un archivo JSON y, luego,
asociado con un algoritmo de ofertas personalizadas a través de un
objeto CustomBiddingAlgorithmRules
.
Recupera la ubicación de un recurso de reglas
Primero, recuperar una ubicación de recursos disponible en la oferta personalizada
recurso de algoritmo con el
customBiddingAlgorithms.uploadRules
. Esta
La solicitud muestra un objeto CustomBiddingAlgorithmsRulesRef
.
con un nombre de recurso. Puedes subir tus reglas
archivo a la ubicación que determine el nombre del recurso. Después
utilice el objeto de referencia de reglas del algoritmo de ofertas personalizadas para crear sus reglas
recurso.
Este es un ejemplo de cómo recuperar una ubicación de recurso disponible:
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()
);
Sube un archivo AlgorithmRules
Después de recuperar la ubicación de un recurso disponible, sube tu archivo de reglas a ese
ubicación en la Red de Display y el sistema de video 360 con el
media.upload
. Este método admite un
carga simple que requiere el parámetro de consulta
uploadType=media
Este es un ejemplo de cómo subir un archivo AlgorithmRules
según una recuperación
Objeto de referencia de reglas del algoritmo de ofertas personalizadas:
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
Crea un objeto de reglas
Una vez que se suba el archivo JSON AlgorithmRules
, crea una oferta personalizada
el recurso de reglas de algoritmos
customBiddingAlgorithms.rules.create
. El
El objeto CustomBiddingAlgorithmRules
que se pasa en la solicitud debe
solo incluye el objeto CustomBiddingAlgorithmRulesRef
el valor asignado del campo rules
. Esto asocia el
Se subió el archivo JSON AlgorithmRules
con el nuevo recurso de reglas.
Este es un ejemplo de cómo crear un recurso de reglas:
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());
Cuando creas un recurso de reglas, Display & Video 360 procesa el conjunto de reglas para
asegurarse de que se puede usar correctamente para puntuar las impresiones. Cómo recuperar el estado
de este procesamiento a través del campo state
del objeto de reglas.
Una vez aceptadas las nuevas reglas, el algoritmo de ofertas personalizadas comienza a utilizar el
para puntuar los valores de impresión de forma inmediata.
Si se rechazan las reglas, recuperar de ellas el motivo del rechazo
error
del objeto. En caso de que se rechace, actualiza tu
AlgorithmRules
para corregir el error y repetir el proceso de carga.
desde recuperar el objeto de referencia de las reglas.
Asigna un algoritmo de ofertas personalizadas
Después de crear un algoritmo de ofertas personalizadas, sube la lógica aceptada y los requisitos necesarios, puedes asignar tu de ofertas de una línea de pedido o un pedido de inserción.
Puedes usar algoritmos de ofertas personalizadas en
maximizar la inversión y
para el objetivo de rendimiento asignando BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO
y el ID del algoritmo de ofertas personalizadas al
performanceGoalType
y
customBiddingAlgorithmId
campos, respectivamente.
Según la estrategia de oferta, pueden estar disponibles otros parámetros de oferta.
como en los productos necesarios.
A continuación, se muestra un ejemplo de cómo actualizar una línea de pedido para usar una oferta para maximizar la inversión con un algoritmo de ofertas personalizadas determinado:
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']
);