Loading

Lógica de AMPscript para gestionar valores en blanco o nulos

Fecha de publicación: Jan 28, 2025
Descripción
Las funciones de AMPscript tienen parámetros obligatorios. Cuando se especifica un valor vacío o nulo en un parámetro obligatorio, la llamada a la función no se realiza correctamente. Si esto sucede, se produce un error en el envío de correos electrónicos, no se procesa CloudPages y se generan otros escenarios no deseados. A continuación, verá un ejemplo del mensaje de error que puede obtener.
Valor no válido especificado para parámetro de función.
  Nombre de la función: Multiply
  Nombre del parámetro: Value2
  Ordinal de parámetro: 2
  Tipo de parámetro: Numérico
  Valor enviado:
En este error, vemos que el valor enviado para el segundo parámetro en la función Multiply (1,2) es nulo o está vacío.
 
Solución

Configuración de la extensión de datos


Una forma de evitar este problema es diseñar la extensión de datos de forma que no estén permitidos los valores vacíos o nulos. Cuando cree una extensión de datos en Contact Builder, encontrará una casilla de verificación que dice "Obligatorio" al crear los campos para la extensión de datos. Esta casilla de verificación garantiza que no se agreguen datos a la extensión de datos sin un valor. También está la opción de un "valor predeterminado".  Un valor predeterminado en un atributo que impide que haya valores vacíos o nulos, a la vez que permite que las consultas SQL o las importaciones agreguen filas sin valores en los campos obligatorios. 

Nota: Un campo obligatorio sin un valor predeterminado puede provocar que en ciertos procesos, como las importaciones o las consultas SQL, aparezca un mensaje de error del tipo "No se puede insertar un valor NULO en una columna no anulable". Pruebe todos los procesos que interactuarán con la extensión de datos con esta configuración antes de activarla. 
 

Lógica de AMPscript para gestionar valores en blanco o nulos


Si la extensión de datos ya existe y no es posible volver a crearla, o hay situaciones en las que a su empresa le sirve tener valores vacíos o nulos, existen soluciones para resolver este problema. AMPscript ofrece a los creadores de contenido la flexibilidad para responder frente a estas situaciones.

Veamos un ejemplo. Supongamos que se hace referencia en un correo electrónico a la extensión de datos que se encuentra a continuación, denominada "OrderConfirmation".
 
ContactKey (abc)EmailAddress (@)OrderNumber (abc)Price (.00)DiscountPrice (.00)
Example1Example1@example.com12345100,0080,00
Example2Example2@example.com23456108,00 

A continuación, encontrará el código de AMPscript ejecutado en un correo electrónico.
 
%%[
Set @price = Lookup("OrderConfirmation","DiscountPrice","ContactKey",_subscriberkey)

Set @tax = "0.08"
]%%

Precio: %%=v(@price)=%%
<br><br>

%%[SET @total = FormatNumber(multiply(@price,@tax),"C2", "en-US")]%%

Precio con lógica: %%=v(@price)=%%
<br><br>

El impuesto es %%=v(@total)=%%

La variable @price debe ser igual que el valor DiscountPrice en la extensión de datos OrderConfirmation según la ContactKey a la que estamos haciendo el envío. A fin de mostrar el comportamiento problemático, establecimos la variable @tax en un "0,08" estático. Luego, imprimimos la variable @price en el correo electrónico con la función v(). En el caso de las dos filas de ejemplo, podemos imprimir la variable sin error. La primera muestra "Precio: 80,00" y la segunda, "Precio: ". Los problemas surgen más adelante en el código cuando intentamos calcular la variable @total con la función Multiply. Cuando obtenemos una vista previa y hacemos una prueba en el primer contacto "Example1", vemos que la última línea que aparece es "El impuesto es $6,40". Sin embargo, cuando probamos "Example2", aparece un mensaje de error como el siguiente. 
 
Valor no válido especificado para parámetro de función.
  Nombre de la función: Multiply
  Nombre del parámetro: Value1
  Ordinal de parámetro: 1
  Tipo de parámetro: Numérico
  Valor enviado:

Si agregamos una línea de código para dar cuenta de que DIscountPrice es nulo o está vacío, la función ya no produce un error.
 
%%[
Set @price = Lookup("OrderConfirmation","DiscountPrice","ContactKey",_subscriberkey)

Set @tax = "0.08"
]%%

Precio: %%=v(@price)=%%
<br><br>

%%[IF empty(@price) THEN 
SET @price= Lookup("OrderConfirmation","Price","ContactKey",_subscriberkey)
ENDIF]%% 

%%[SET @total = FormatNumber(multiply(@price,@tax),"C2", "en-US")]%%

Precio con lógica: %%=v(@price)=%%
<br><br>

El impuesto es %%=v(@total)=%%

La lógica IF/THEN busca la variable @price que inicialmente se estableció igual que el valor DiscountPrice de la extensión de datos OrderConfirmation. Utilizamos la función Empty() para comprobar si el valor es nulo o está vacío. Si eso sucede, definimos la variable @price con otro valor de campo, como "Precio". Si asumimos que "Precio" es un campo obligatorio, esto debería impedir errores en la función Multiply debido a valores nulos o vacíos. 
 

Recursos

Número del artículo de conocimiento

000393055

 
Cargando
Salesforce Help | Article