Loading

Logica dell'AMPscript per gestire i valori nulli o vuoti

Data pubblicazione: Jan 28, 2025
Descrizione
Le funzioni AMPscript hanno dei parametri obbligatori. Quando si passa un valore nullo o vuoto a un parametro obbligatorio, l'intera chiamata alla funzione non riesce. Quando una chiamata alla funzione non riesce, in genere non riesce neppure l'invio email, si verifica il mancato rendering di CloudPages o si presentano altri scenari non desiderabili. Di seguito è riportato un esempio dell'errore che potrebbe essere visualizzato.
È stato specificato un valore non valido per il parametro della funzione.
  Nome funzione: Multiply
  Nome parametro: Value2
  Ordinale parametro: 2
  Tipo di parametro: Numerico
  Valore inviato:
In questo errore si può vedere che il valore inviato per il secondo parametro della funzione Multiply(1,2) è nullo o vuoto.
 
Risoluzione

Configurazione dell'estensione dati


Un modo per evitare che questo problema si manifesti è progettare le estensioni dati in modo da non consentire valori nulli o vuoti. Quando si crea un'estensione dati in Contact Builder per la prima volta, durante la creazione dei campi dell'estensione dati compare a casella di controllo "Required" (Obbligatorio). La casella di controllo "Required" assicura che non vengano aggiunti dati all'estensione dati senza un valore. Esiste anche l'opzione "Valore predefinito".  La presenza di un "valore predefinito" per un attributo impedisce l'inserimento di valori nulli o vuoti e consente alle importazioni o alle query SQL di aggiungere righe prive di valori per i campi obbligatori. 

Nota: la presenza di un campo obbligatorio senza un valore predefinito può causare il fallimento di processi, come le Importazioni o le query SQL, con un errore simile a "Impossibile inserire un valore NULL in una colonna non annullabile (non-nullable)”. Si prega di testare tutti i processi che potrebbero interagire con un'estensione di dati con questa configurazione, prima di iniziare a lavorare. 
 

Logica dell'AMPscript per gestire i valori nulli o vuoti


Se l'estensione dei dati esiste già e non può essere ricreata, o se per l'azienda ci sono scenari in cui ha senso avere un valore nullo o vuoto, sono disponibili altre soluzioni per risolvere questo problema. AMPscript offre ai creatori di contenuti la flessibilità necessaria per tenere conto di questi scenari.

Vediamo un esempio. Supponiamo che la seguente estensione dati denominata "OrderConfirmation" sia nominata in un'email.
 
ContactKey (abc)EmailAddress (@)OrderNumber (abc)Price (.00)DiscountPrice (.00)
Example1Example1@example.com12345100.0080.00
Example2Example2@example.com23456108.00 

Il codice AMPscript eseguito in un'email è riportato di seguito.
 
%%[
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)=%%

Ipotizziamo che si voglia impostare la variabile @price uguale al valore DiscountPrice nell'estensione dati OrderConfirmation in base al ContactKey destinatario dell'invio. Per mostrare il comportamento problematico, impostare la variabile @tax sul valore statico "0,08". Quindi, stampare la variabile @price nell'email utilizzando la funzione v(). Considerando le due righe di esempio, è possibile stampare la variabile senza errori. La prima mostrerebbe "Price: 80.00" e la seconda "Price: ". Il problema si presenta più avanti nel codice, quando si tenta di calcolare la variabile @total utilizzando la funzione Multiply (Moltiplica). Quando si seleziona Anteprima e test sul primo contatto "Example1", si nota che la riga finale riporta "Your tax is $6.40" (L'imposta è di $6,40). Tuttavia, quando si esegue il test su "Example2", viene visualizzato un banner di errore simile al seguente. 
 
Invalid value specified for function parameter (Valore non valido specificato per il parametro della funzione).
  Nome funzione: Multiply
  Nome parametro: Value1
  Ordinale parametro: 1
  Tipo di parametro: Numerico
  Valore inviato:

Se si aggiunge una riga di codice per tenere conto di DIscountPrice nullo o vuoto, la chiamata alla funzione non fallisce più.
 
%%[
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 logica IF/THEN cerca la variabile @price, inizialmente impostata uguale al valore DiscountPrice dell'estensione dati OrderConfirmation. Si utilizza la funzione Empty() per verificare se il valore è nullo o vuoto. Se lo è, si imposta la variabile @price su un altro valore del campo, "Price". Supponendo che Price sia un campo obbligatorio, ciò dovrebbe evitare che si verifichino errori nella funzione Multiply a causa della presenza di valori nulli o vuoti. 
 

Risorse

Numero articolo Knowledge

000393055

 
Caricamento
Salesforce Help | Article