> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# スクリプト アクティビティ

> カスタム JavaScript ルールを使用して他のアクティビティで抽出されたデータを処理または修正します。値の正規化、field 値の選択、計算値の算出が可能です。

スクリプト アクティビティは、各種抽出アクティビティで利用可能なルールとは別に、Skill 内でスクリプト ルールを実装するために設計されています。スクリプトには、他のアクティビティで抽出されたデータを処理または修正するためのルールを含めることができます。次のような場合にスクリプト ルールを使用します。

* field の値を正規化する (例: ドキュメントに記載された通貨金額からアルファコード (3 文字の通貨コード) を分離する) 。
* 複数の field 値から 1 つを選択する (例: 単一の field の値が複数のアクティビティによって抽出された場合、どの値を結果の field に選択・記録するかを指定する) 。
* ドキュメントで見つからなかった field の値を計算する (例: 課税対象の金額を含むすべての field が抽出されている場合に、既知の税率を用いて支払税額を計算する) 。

ビジネス ルールと異なり、スクリプト ルールは手動確認中にエラーを含む値をハイライトしません。これは、スクリプト ルールがドキュメント処理で得られたさまざまなデータを補完・修正することを目的としており、Document skill の不可欠な一部であるためです。

<div id="set-up-a-script-activity">
  ## スクリプト アクティビティを設定する
</div>

<Steps>
  <Step title="アクティビティを追加する">
    **Activities** タブで、ドキュメント処理フローに スクリプト アクティビティを追加します。ルールに他の field 抽出 アクティビティが含まれている場合は、それらの後にこのアクティビティを追加してください。
  </Step>

  <Step title="スクリプト エディターを開く">
    **Activity Properties** ペインで、**Script Editor** をクリックします。
  </Step>

  <Step title="スクリプトを記述する">
    開いたダイアログで、JavaScript を使用して必要な操作をすべて実行するスクリプトを作成し、ルールをスクリプト形式で設定します。画面上部のクイック編集ボタンを使うと、あらかじめ用意されたコード スニペットをスクリプトに追加できます。調整して利用できるスクリプト ルールの例については、以下の [Sample script rules](#sample-script-rules) を参照してください。
  </Step>

  <Step title="スクリプトを保存する">
    **Save** をクリックします。すると、**Activity Properties** ペインに、スクリプトで使用されているすべての field の一覧が表示されます。一覧に必要な field がすべて含まれていることを確認してください。
  </Step>

  <Step title="アクティビティをテストする">
    **Test Activity** をクリックし、抽出結果を確認します。ルールが意図したとおりに機能しない場合は、スクリプトが正しく記述されているか確認してください。さらに、スクリプト ルール で使用しているすべての field の抽出品質も確認してください。
  </Step>
</Steps>

<div id="sample-script-rules">
  ## サンプルのスクリプト ルール
</div>

* このスクリプト ルールは、**合計金額** Field の値に3文字の通貨コードを追加するように設計されています。まず **Country** field の値を確認します。該当 field の値が "USA" または "United States" のいずれかである場合、**合計金額** Field の数値に "USD" コードを追加します。**Country** field の値が "United Kingdom" または "Great Britain" のいずれかである場合、**合計金額** Field の数値に "GBP" コードを追加します。

```javascript theme={null}
if ( Context.GetField("Country").Value == "USA"|"United States" ) {
               Context.GetField("Total").Value = Context.GetField("Total").Value + " USD";
} else 
if( Context.GetField("Country").Value == "United Kingdom"|"Great Britain" ) {
               Context.GetField("Total").Value = Context.GetField("Total").Value + " GBP";
}
```

* このスクリプト ルールは、選択した組織名を指定のfieldに追加するために設計されています。繰り返しfieldである**Preamble Org**には、ドキュメントの前文に記載されたすべての組織名が含まれており、Named Entities (NER) アクティビティによって抽出されます。スクリプト ルールは、**Preamble Org** fieldに組織名が3件以上含まれている場合、最初に抽出された値を**Party 1** fieldに、最後の値を**Party 2** fieldに設定するよう構成されています。

```javascript theme={null}
var preambleOrgsFields = Context.GetFields("Preamble Org");
 
if (preambleOrgsFields.length > 2)
{
   Context.GetField("Party 1").Value = preambleOrgsFields[1].Value;
   Context.GetField("Party 2").Value = preambleOrgsFields[preambleOrgsFields.length - 1].Value;
}
```
