Script

[スクリプトの編集] ダイアログを使用して作成/編集した、ユーザ定義の JavaScript ソースコードを実行します。Script 関数には、動作を定義する JavaScript スクリプトコードが含まれており (.js ファイルとして保存および格納できます)、ソースコードでは個々の Script 関数の動作のみを定義します。例えば、ジョブに複数の Script 関数がある場合、1 つの Script 関数で定義された変数は、その特定の Script 関数用にのみ定義されており、ジョブのすべての Script 関数用ではありません。

:  
  • この関数は、In-Sight ファームウェア 5.1.0 以上を実行している In-Sight ビジョンシステムだけで使用できます。モデル一覧およびサポートされているファームウェアバージョンについては、「ファームウェアバージョン」を参照してください。
  • 次の制限は、すべての Script 関数および指定したジョブで使用される外部スクリプトモジュールによって割り当てられたメモリに適用されます。

    • スクリプトのメモリに割り当てられる最大バイト数の制限は 4MB です。
    • スタックに割り当てられる最大バイト数の制限は 64KB です。
  • 不要なメモリの割り当てを避けるため、使用していないすべての関数をスクリプトから削除する必要があります (デフォルトのサンプルスクリプト内で使用されていない関数など)。例えば、文字列オブジェクトを生成してプロットする、サンプルの使用されていない draw 関数が含まれているスクリプトは、メモリおよび CPU サイクルを消費します。
  • 実行を無効にするようにセルに示す Script 関数の機能は、ジョブのロードに関しては明示的にその他のスプレッドシート関数とは異なります。通常は、その他のスプレッドシート関数は、関数の実行後に記録された最後の値を保持します。無効になっている関数を参照する関数は、記録された最後の値を返します。ただし、Script 関数はその内部実行メソッドの実行を必要とするため、無効になっている Script 関数をロードすると、Script データ構造体を表示しますが、Get 関数が特定の戻り値を期待しているものの、これは Script 関数が実行されなかったために返されていないので、Script データ構造体を参照する Get 関数は #ERR を返します。

  • Script 関数は Dialog 関数内ではサポートされていません。

Scriptの入力パラメータ

Syntax:Script(引数 1,...,引数 100)

従来の In-Sight スプレッドシート関数とは異なり、Script 関数はさまざまな入力引数を取得することができます (1 ~ 100)。各引数は、次の値タイプのいずれかを生成するセル参照、リテラル値、または式である必要があります。

  • 数値
  • 文字列
  • イベント
  • 形状オブジェクト
  • バイナリデータ構造体
  • ブロブ、エッジ、ヒスト、IDMax またはパターンデータ構造体
  • オブジェクトまたはアレイデータ構造体 (別の Script 関数から返されたもの)
:  
  • セル範囲が引数として指定されている場合、その範囲に含まれている個々のセル参照まで拡張されるので、セル範囲に含まれている引数と同数の引数が消費されます。
  • Script 関数の引数が、ブロブ、エッジ、ヒスト、IDMax またはパターンデータ構造体を返している別のセルへの参照となっている場合、Script 関数に渡されるオブジェクトは、実行メソッドが返されるまでの間のみ使用できます。Script 関数は直接このオブジェクトを返し、これを Script 関数を含んでいるセルの結果値として使用できます。ただし、スクリプトがこのオブジェクトを内部に (例えば、その描画メソッドで使用して) 格納する場合は、実行メソッドが返された後、このオブジェクトは使用不能になり、そのメソッドのいずれかを呼び出そうとするとエラーになります。実行メソッドによって返されたスクリプトオブジェクトのプロパティなどの結果構造体をスクリプトが返す場合にも、以上のことが適用されます。例えば、基になるオブジェクトが有効でなくなるので、これらのプロパティのいずれかは Get 関数によって使用できなくなります。
  • In-Sight 5705 または 5705C ビジョンシステムの実行時に、math 演算に NaN または undefined の値が含まれていると、Script 関数は誤った結果を返すことがあります。
  • スクリプトの作成時に、下記の例に示すように入力引数を検証するコードを含めると、エラーを削減することができます。

                                        function Tool()
    {
    }
    module.exports = Tool;
    function isNumber(n) {
      if (n === undefined || n == null || isNaN(parseFloat(n)) || !isFinite(n))
        return false;
      return true;
    }
    Tool.prototype.run = function(x, y)
    {
      if (!isNumber(x) || !isNumber(y)){
        throw new Error("Usage: Requires 2 numeric arguments");
      return +x + +y;
    } 

Scriptの出力

戻り値

この関数は、次のタイプのいずれかの値を返します。

  • 数値
  • true (1) または false (0)
  • 文字列
  • バイナリデータ構造体
  • ブロブ、エッジ、ヒスト、IDMax またはパターンデータ構造体
  • 形状オブジェクト
  • オブジェクト
  • null、undefined、または no return ステートメント (空のオブジェクトと同じに扱われます)

この関数は、次のいずれかの条件の場合に #ERR を返します。

  • ソースコードが実行メソッドを含んでいない場合。
  • 引数の値のいずれかがサポートされていないタイプである場合。
  • コンストラクタが例外をスローする場合。
:  GetErrorString 関数を使用して、例外メッセージをソースコードに書き込んだ場合に、例外メッセージを取得することができます。すべての例外は、同じエラーコード (20000005) を返します。

Scriptデータアクセス関数

Get 関数を使用して、Script 関数によって返されるオブジェクトのプロパティにアクセスします。