メインコンテンツへスキップ
このセクションでは、ABBYY FlexiCaptureで処理ステージやステーションのインターフェイスをカスタマイズするためにスクリプトを使用する方法について説明します。

サポートされているスクリプト言語

ABBYY FlexiCapture は、C#.NetVisualBasic.NetJScript.NetJScript®JScript.CompactVBScript の各スクリプト言語をサポートしています。 .Net 言語で記述されたスクリプトの詳細

使用上の詳細

VBScript では、NULL 値を渡す際にキーワード “Me” (JScript における “this” に相当) を使用する必要があります。一方、.Net 言語では NULL 値は通常のパラメーターとして渡されます。 各スクリプトについては、そのすべてのパラメーターのアクセス権限があらかじめ定められています。アクセス権限によって、スクリプトから使用できるメソッドの範囲が決まります。オブジェクトのメソッドを呼び出す場合、返されるオブジェクトの権限は常に元のオブジェクトから継承されます (このルールの例外については、対応するメソッドのコメントで説明されています) 。
スクリプトの完了後は、オブジェクトの動作が不定になるため、スクリプト オブジェクトは使用できません。
ABBYY FlexiCapture スクリプト エディターで記述したスクリプトをデバッグするには、MessageBox メソッドを使用できます。

カスタム関数

スクリプト エディターでは、ユーザー独自の関数やプロシージャを作成し、それらをスクリプト コードから呼び出すことができます。 カスタム関数とプロシージャは、スクリプト エディター からアクセスできるグローバル モジュールに記述する必要があります。そのためには、スクリプト エディターのツールバーにあるドロップダウンリストで、使用可能なグローバル モジュール (Rule Global Script Module、Export Global Script Module、EventsNonInteractiveProcessor) のいずれかを選択します。 1 つのモジュール内のすべての関数は、同じ言語で記述する必要があります。スクリプト本体のコードは、対応するグローバル モジュールで使用されている言語とは別の言語で記述できます。 JScript®JScript.CompactVBScript のスクリプト言語で記述されたグローバル関数は、これらのいずれかの言語で記述されたスクリプトから呼び出すこともできます。たとえば、VBScript で記述されたルールのコードから、JScript で記述されたグローバル モジュール内の関数を呼び出すことができます。 .Net 言語で記述されたグローバル関数は、.Net 言語 (C#.NetVisualBasic.NetJScript.Net) のいずれかで記述されたスクリプトから呼び出すことができます。 グローバル モジュールの関数を呼び出すには、対応するプレフィックス (RulesExportEventsNonInteractiveProcessor) を使用する必要があります。たとえば、Rule Global Script Module モジュールの関数 DoSomething は、次のように呼び出します: Rules.DoSomething ()
.Net 言語で記述されたスクリプトでは、グローバル モジュールの関数はプレフィックスを使用せず、関数名だけで呼び出されます。
スクリプト エディターでは、テキスト定数に RTL 言語を使用できません。スクリプトに RTL テキストを追加する必要がある場合は、次のいずれかの回避策を使用してください:
  1. RTL テキストを ユーザー スクリプト メッセージ または環境変数に格納します。
  2. プロジェクトまたは Document Definition で外部アセンブリを使用します (詳細については、External assemblies を参照してください) 。

スクリプト実行タイムアウト

デフォルトのタイムアウトは、エクスポートでは 30 秒、その他のスクリプトでは 10 秒です。 デフォルトのタイムアウトを変更するには、レジストリで次の値を指定します。 HKEY_CURRENT_USER\Software\ABBYY\FlexiCapture\12.0\Controller\ScriptSupport\DefaultScriptTimeout レジストリ内のタイムアウト値はミリ秒単位で指定します。スクリプトの実行時間が指定したタイムアウトを超えると、そのスクリプトは強制終了され、“Script execution timeout” というエラーメッセージが返されます。スクリプトがインポート、認識、またはエクスポート タスクの一部である場合は、同様のエラーメッセージがログに記録されます。
スクリプト実行タイムアウトは、JScript および VBScript で記述されたスクリプトにのみ適用されます。
NetworkService として実行されるスクリプトのタイムアウトを変更するには、対応するユーザープロファイルのレジストリ ブランチを変更する必要があります。

オブジェクトモデル

オブジェクトモデルは、ABBYY FlexiCapture の以前のバージョンで作成されたスクリプトとの互換性があります。 オブジェクトモデルの詳細はこちら