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 を使用すると、コンテンツ作成者はこのようなシナリオを考慮して柔軟に設定できます。
例を見てみましょう。たとえば、下記の「OrderConfirmation」というデータエクステンションがメール内で参照されているとします。
| ContactKey (abc) | EmailAddress (@) | OrderNumber (abc) | Price (.00) | DiscountPrice (.00) |
|---|---|---|---|---|
| Example1 | Example1@example.com | 12345 | 100.00 | 80.00 |
| Example2 | Example2@example.com | 23456 | 108.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

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.