Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

null または 空の値を処理するための AMPscript ロジック

公開日: Jan 28, 2025
説明

AMPscript 関数には必須パラメーターがあります。null や空の値が必須パラメーターに渡されると、関数コール全体が失敗します。関数コールが失敗すると、通常、メール送信が失敗したり、CloudPages (クラウド・ページズ)が表示されなかったりするだけでなく、他にも望ましくない状況が発生します。表示されるエラーの例を以下に示します。

Invalid value specified for function parameter.
  Function Name:Multiply
  Parameter Name:Value2
  Parameter Ordinal:2
  Parameter Type:Numeric
  Submitted Value:

このエラーでは、Multiply(1,2) 関数の 2 番目のパラメーターの設定した値が、null または空であることがわかります。
 

解決策

データエクステンション設定


この問題が発生しないようにする方法の 1 つは、null や空の値を許可しないようにデータエクステンションを設計することです。最初の Contact Builder でのデータエクステンションの作成時には、データエクステンションのフィールドを作成する場合の [必須] チェックボックスが用意されています。[必須] チェックボックスを使用すると、値のないデータがデータエクステンションに追加されないようにすることができます。また、[デフォルト値] のオプションもあります。  属性に [デフォルト値] を設定すると null や空の値を使用できなくなりますが、インポートや SQL クエリでは必須フィールドに値がない行を追加することもできます。 

注意:デフォルト値を設定していない必須項目を使用すると、インポートや SQL クエリなどのプロセスが「Cannot insert a NULL value into a non-nullable column」 (NULL 値を Null 非許容列に挿入することはできません) のようなエラーで失敗する可能性があります。稼働開始前にはこの設定で、データエクステンションを操作するすべてのプロセスをテストしてください。 
 

null または 空の値を処理するための AMPscript ロジック


データエクステンションがすでに存在していて再作成できない場合や、null や空の値を使用したほうが適切なビジネスのシナリオがある場合、この問題を解決するためのソリューションは他にもあります。AMPscript を使用すると、コンテンツ作成者はこのようなシナリオを考慮して柔軟に設定できます。

例を見てみましょう。たとえば、下記の「OrderConfirmation」というデータエクステンションがメール内で参照されているとします。
 

ContactKey (abc)EmailAddress (@)OrderNumber (abc)Price (.00)DiscountPrice (.00)
Example1Example1@example.com12345100.0080.00
Example2Example2@example.com23456108.00 


メール内で実行されている AMPscript コードは以下のとおりです。
 

%%[
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)=%%


送信先の ContactKey に基づいて、OrderConfirmation データエクステンションの @price 変数を DiscountPrice 値に設定する必要があります。問題になる動作を発生させるために、@tax 変数を静的な「0.08」に設定します。次に、v() 関数を使用してメールに @price 変数を表示します。この例の 2 行についてはエラーなく変数を表示できます。1 行目には「Price:80.00」、2 行目には「Price:」と表示されます。コードの後半で Multiply 関数を使用して @total 変数を計算しようとすると、問題が発生します。最初の連絡先「Example1」をプレビューしてテストすると、最終行に「Your tax is $6.40 (税額は $6.40)」と表示されているのがわかります。一方、「Example2」をテストすると、以下のようなエラーバナーが表示されます。 
 

Invalid value specified for function parameter.
  Function Name:Multiply
  Parameter Name:Value1
  Parameter Ordinal:1
  Parameter Type:Numeric
  Submitted Value:


null または空の DiscountPrice に対応するコード行を追加すると、関数コールは失敗しなくなります。
 

%%[
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)=%%


IF/THEN ロジックでは、OrderConfirmation データエクステンションから DiscountPrice 値と等しくなるように初期設定された @price 変数を参照します。Empty() 関数を使用して、値が null または空であるかを確認します。値が null または空である場合は、代わりに @price 変数に別のフィールド値である「Price」を設定します。「Price」が必須フィールドであるとすれば、Multiply 関数で null または空の値によるエラーが発生することはなくなります。 
 

リソース

ナレッジ記事番号

000393055

 
読み込み中
Salesforce Help | Article