Loading

Logique AMPscript pour gérer les valeurs null ou vides

Date de publication: Jan 28, 2025
Description
Les fonctions AMPscript ont des paramètres obligatoires. Lorsqu’une valeur null ou vide est transmise à un paramètre obligatoire, elle provoque l’échec de l’appel de fonction entier. Lorsqu’un appel de fonction échoue, il en résulte généralement l’échec de l’envoi d’e-mail, le non rendu de CloudPages ou d’autres scénarios indésirables. Vous trouverez ci-dessous un exemple d’erreur.
Valeur non valide spécifiée pour le paramètre de fonction.
  Nom de la fonction : Multiply
  Nom du paramètre : Value2
  Ordinal du paramètre : 2
  Type de paramètre : Numérique
  Valeur soumise :
Dans cette erreur, la valeur soumise pour le deuxième paramètre dans le fonction Multiply(1,2) est null ou vide.
 
Résolution

Configuration de l’extension de données


Pour éviter ce problème, vous pouvez configurer vos extensions de données pour qu’elles interdisent les valeurs null ou vides. Lorsque vous créez une extension de données dans Contact Builder pour la première fois, une case à cocher « Obligatoire » apparaît lorsque vous créez les champs pour votre extension de données. La case à cocher « Obligatoire » garantit qu’aucune donnée n’est ajoutée à l’extension de données sans valeur. Il y a aussi une option pour une « Valeur par défaut ».  Une « Valeur par défaut » pour un attribut interdit les valeurs null ou vides mais autorise aussi les importations ou les requêtes SQL à ajouter des lignes sans valeurs pour les champs obligatoires. 

Remarque : Un champ obligatoire sans valeur par défaut peut provoquer l’échec des processus comme les importations ou les requêtes SQL avec une erreur semblable à « Cannot insert a NULL value into a non-nullable column ». Veuillez tester tous les processus qui interagissent avec une extension de données avec cette configuration avant la mise en service. 
 

Logique AMPscript pour gérer les valeurs null ou vides


Si l’extension de données existe déjà et ne peut pas être recréée, ou s’il existe des scénarios pour votre société qui doivent avoir une valeur null ou vide, il existe des solutions pour résoudre ce problème. AMPscript offre aux créateurs de contenu la flexibilité pour tenir compte de ces scénarios

Examinons un exemple. Supposons que l’extension de données ci-dessous appelée « OrderConfirmation » est référencée dans un e-mail.
 
ContactKey (abc)EmailAddress (@)OrderNumber (abc)Price (.00)DiscountPrice (.00)
Example1Example1@example.com12345100.0080.00
Example2Example2@example.com23456108.00 

Le code AMPscript exécuté dans un e-mail est le suivant.
 
%%[
Set @price = Lookup("OrderConfirmation","DiscountPrice","ContactKey",_subscriberkey)

Set @tax = "0.08"
]%%

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

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

Price with Logic: %%=v(@price)=%%
<br><br>

Your tax is %%=v(@total)=%%

Nous souhaitons définir la variable @price égale à la valeur DiscountPrice dans l’extension de données OrderConfirmation en fonction de la ContactKey à laquelle nous effectuons l’envoi. Pour démontrer le comportement problématique, nous définissons la variable @tax sur une valeur "0.08" statique. Nous imprimons ensuite la variable @price dans l’e-mail à l’aide de la fonction v(). Pour les deux lignes d’exemple, nous pouvons imprimer la variable sans erreur. La première affiche "Price: 80.00" et la deuxième affiche "Price: ". Nous rencontrons ensuite des problèmes dans le code lorsque nous tentons de calculer la variable @total à l’aide de la fonction Multiply. Lorsque nous affichons un aperçu et testons sur le premier contact "Example1", la ligne finale affiche "Your tax is $6.40". Cependant, lorsque nous testons "Example2", nous obtenons une bannière d’erreur semblable à la bannière ci-dessous. 
 
Valeur non valide spécifiée pour le paramètre de fonction.
  Nom de la fonction : Multiply
  Nom du paramètre : Value1
  Ordinal du paramètre : 1
  Type de paramètre : Numérique
  Valeur soumise :

Si nous ajoutons une ligne de code pour tenir compte de la valeur DIscountPrice null ou vide, l’appel de fonction n’échoue plus.
 
%%[
Set @price = Lookup("OrderConfirmation","DiscountPrice","ContactKey",_subscriberkey)

Set @tax = "0.08"
]%%

Price: %%=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")]%%

Price with Logic: %%=v(@price)=%%
<br><br>

Your tax is %%=v(@total)=%%

La logique IF/THEN recherche la variable @price définie initialement comme égale à la valeur DiscountPrice de l’extension de données OrderConfirmation. Nous utilisons la fonction Empty() pour vérifier si la valeur est null ou vide. Si c’est le cas, nous définissons la valeur @price sur une autre valeur de champ, "Price", à la place. En supposant que Price est un champ obligatoire, ceci peut empêcher des erreurs de se produire dans la fonction Multiply à cause des valeurs null ou vides. 
 

Ressources

Numéro d’article de la base de connaissances

000393055

 
Chargement
Salesforce Help | Article