メインコンテンツへスキップ
以下の JavaScript サンプルでは、Advanced Script Rules でよく使われるパターンを紹介します。具体的には、field の有無の確認、数値の比較、条件付き検証の適用、テーブルデータの検証です。コピーして、ご自身の field 名や業務ルールに合わせて調整してください。

field が存在することを確認する

例えば、MyField field が検出され、値が設定されていることを確認します:

浮動小数点数を比較する

浮動小数点数を直接比較すると、予期しない結果になることがあります。数値、特に金額を確実に比較するには、組み込みのMathオブジェクトのメソッドを使用してください。

別のfieldに応じて、空でない値を必須にする

任意のfieldは、別のfieldの値によって必須になる場合があります。たとえば、MaritalStatusMarried の場合は、配偶者の姓と名のfieldを入力する必要があります。 このスクリプトルールは、MaritalStatusMarried のときに、SpouseFirstNameSpouseLastName の両方が入力されていることを検証します:

field がドキュメント上にあることを確認する

ルールは、値が実際にドキュメントに印字されていない場合でも、field の値を補完することもできます。たとえば、複数の税が適用される場合、合計税額は自動的に計算できます。ただし、国によっては、合計税額をドキュメントに印字することが求められます。 このスクリプト ルールは、ドイツのレシートについて、合計税が画像上に実在することを確認します。他の国では、合計税の field に対して Required field フラグが有効になっているため、追加のチェックは不要です:

特定のケースでデータを検証する

合計税額がすべての税の合計に等しいことは、事前定義されたルール (Check Sum) で確認できます。ただし、国によっては税の1つが負の値になる場合があるため、すべての税を合算する場合と、返還税を加減算する場合の両方に対応できるのはスクリプトルールのみです。どちらの処理にするかは、原産国によって決まります。 このスクリプトは、2つの税の合計が合計税額に等しいことを検証します。例外として、スペインのレシートでは、2つの税の合計または差が合計税額に等しければ有効とみなします。

列の合計を外部の field と比較する

スクリプトは、通常の field だけでなく、テーブル内の値も参照できます。ルールチェックを高速化するため、テーブルを変数に保存し、テーブルを再取得する代わりにその変数を参照してください。変数にテーブル全体が含まれている場合は、Instances プロパティを使用して行にアクセスし、次に GetChild を使用して行内の特定のセルを取得します。 以下のサンプルでは、Total Price 列のすべての値を合計し、その結果を Total field と比較します。

列セルを外部の field と比較し、検証に失敗した行を一覧表示する

Context.GetFields を使用してテーブル列を参照すると、列内のすべてのセルを取得でき、ループ処理に役立ちます。 以下のサンプルでは、各行の税率を全体の税率と比較します。値が一致しない場合でも、スクリプトはただちに失敗せずに処理を続行し、不一致のある行番号を収集してエラーメッセージに表示します:

行の値の積を別の行の値と比較する

テーブルの異なる列に対して、明示的なループを使わずに行単位で処理を実行できます。各列は Context.GetField を使って参照します。これにより、各行に対して自動的に実行される繰り返しルールが作成されます。なお、この方法で参照する列はすべて同一テーブル内のものに限ります。 以下のサンプルでは、各行で数量に単価を掛け、その結果を明細行の合計金額と比較します。