インラインスクリプト

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:9分
  • コーディング経験のあるユーザーが、アクションまたはフローの構成中に入力値を設定および変更するインラインスクリプトを記述できるようにします。インラインスクリプトを使用して、小さな形式変換、データ変換、または演算操作を必要とする入力値を変更します。

    変換関数を使用して、スクリプティングなしで入力値を変更することもできます。利用可能なオプションのリストについては、「変換関数」を参照してください。

    次のコンポーネントを設定すると、ワークフロースタジオ に [スクリプト] ボタンが表示されます。
    • フローのアクションを構成する際のアクション入力
    • フローのアクションを構成する際のアクション出力
    • フローのフローロジックを構成する際のフローロジック入力
    • フローのフローロジックを構成する際のフローロジック出力
    • アクションのステップを構成する際のステップ入力
    • フローのサブフローを構成する際のサブフロー入力
    • フローのサブフローを構成する際のサブフロー出力

    インラインスクリプトは、入力が想定するものと同じデータ型の値を返す必要があります。たとえば、レコード入力のインラインスクリプトは GlideRecord オブジェクトを返す必要があり、日付入力のインラインスクリプトは日時値を返す必要があります。インラインスクリプトを含むアクションとフローを常にテストし、フロー実行の詳細にランタイムエラーがないことを確認します。

    スクリプト作成者は、ServiceNow AI Platform テーブル構造とフィールドタイプに精通している必要があります。さらに、ServiceNow API を使用してレコードとシステムデータを操作する方法を知っている必要があります。

    メリット

    インラインスクリプトには次のメリットがあります。
    • カスタムアクションやカスタムフローを作成しなくても、データ変換や変換を簡単に行うことができます。
    • スクリプトの影響を受ける入力データを特定できます。
    • スクリプティング機能へのアクセスを、利用可能な ServiceNow API に精通しているユーザーまたはグループに制限することができます。

    インラインスクリプトへのアクセス

    flow_designer_scripting ロールまたは [スクリプティングを許可] 委託開発権限のいずれかを付与することで、オンラインスクリプティングへのアクセス権をユーザーに付与することができます。ロールと開発者権限の両方で、ワークフロースタジオ 入力ごとにスクリプトボタンフィールドが表示されます。

    スクリプトボタン

    ユーザーがインラインスクリプトを作成できるようにすると、ワークフロースタジオ によりフローおよびステップ入力の横にスクリプトボタンが表示されます。

    図 : 1. 入力の横に表示されるスクリプトボタン
    [ログ] アクションに利用可能な入力。[レベル] と [メッセージ] の入力には [スクリプト] ボタンが表示されます。

    [スクリプト] ボタンをクリックするとスクリプトエディターが開き、標準の入力インターフェイスが置き換えられます。入力値を計算するスクリプトを入力します。

    スクリプトに、スクリプトの結果を含む「return」ステートメントが含まれていることを確認してください。たとえば、「return shortDesc;」は「shortDesc」変数の値を返します。

    図 : 2. 入力用のスクリプトエディター
    [ログ] アクションに利用可能な入力。[メッセージ] の入力には、スクリプトエディターと、64 の平方根の計算結果を返すスクリプトが表示されます。

    [スクリプトを折りたたむ (Collapse Script)] ボタンをクリックすると、スクリプトエディターが非表示になり、読み取り専用バージョンの入力が表示されます。[スクリプトを展開 (Expand Script)] ボタンをクリックすると、スクリプトエディターが表示され、スクリプトを編集できるようになります。

    図 : 3. スクリプトを含む入力
    [ログ] アクションに利用可能な入力。[メッセージ] 入力には、「スクリプト化 (展開して編集)」というテキストが表示されます。

    ワークフロースタジオ データオブジェクト

    スクリプト作成者は、「fd_data」オブジェクトを使用して、前のアクションとステップのデータにアクセスできます。fd_data オブジェクトを使用して、フローの特定の出力にドット連結します。スクリプトエディターの先行入力の提案を使用して、特定の出力値を選択できます。たとえば、fd_data と入力し、先行入力の提案から _2__for_each.item を選択して、fd_data._2__for_each.item へのドット連結参照を作成します。この参照は、フローの 2 番目の出力 (この例では For Each フローロジックアイテム) からのデータにアクセスします。
    重要:
    fd_data オブジェクトには、特定のフロー出力へのドット連結参照が常に必要です。ドット連結参照がないと、インラインスクリプトは ワークフロースタジオ データにアクセスできません。

    ワークフロースタジオは、アクション、フロー、またはサブフローを保存するたびにデータオブジェクトを更新します。先行入力の提案にターゲットが含まれていない場合は、アクション、フロー、またはサブフローを保存し、ピリオド文字を再入力して提案のリストを更新します。

    表 : 1. フローデザイナーのデータオブジェクトのオプション
    データターゲット 参照構文
    アクションの入力 fd_data.action_inputsaction-input-name var task = fd_data.action_inputs.task;
    フロー変数 fd_data.flow_var.flow-variable-name var shortDesc = fd_data.flow_var.short_description;
    前のアクション、フローロジック、またはステップの出力 fd_data._output-target-step-number__output-target-name var taskRecord = fd_data._2__create_task;
    サブフロー入力 fd_data.subflow_inputs.subflow-input-name var reqItem = fd_data.subflow_inputs.requested_item;
    トリガー fd_data.trigger.trigger-data-pill var incident = fd_data.trigger.current;

    一般的なガイドライン

    再利用可能かつメンテナンス可能なインラインスクリプトを作成するには、次の一般的なガイドラインに従います。

    再利用不可能な短いロジック用のインラインスクリプトを記述する
    インラインスクリプトを使用して、特定の入力およびユースケースのデータをフォーマットまたは変更します。標準的で再利用可能な入力データの変換とフォーマットの操作の場合は、代わりに変換関数を選択してください。
    利用可能な変換関数の確認
    ワークフロースタジオ は、データ変換とフォーマットの操作のための標準的な変換関数のリストを提供します。カスタムスクリプトソリューションを記述して管理するのではなく、既存の変換関数が利用可能な場合はそれを選択してください。
    インラインスクリプトからのスクリプトインクルードの呼び出し
    インラインスクリプトからスクリプトインクルードを呼び出すと、記述するコードの量を削減でき、また共通コードを 1 つの場所に保持することもできます。スクリプトインクルードを呼び出すには、クラスコンストラクターを使用します。スクリプトインクルードの作成の詳細については、「Script includes」を参照してください。
    var si = new MyScriptInclude();
    si.functionOne();
    インラインスクリプトではなく、再利用可能なコードのカスタムアクションまたはサブフローを作成する
    ソースデータのデータ型の変更など、再利用可能または複合データロジックのカスタムアクションまたはサブフローを作成します。また、コードに慣れていないフローデザイナー向けにカスタムアクションやサブフローを提供することもできます。
    アクションとフローの機能を複製しないようにする
    アクションとフローの機能を複製するインラインスクリプトは記述しないでください。たとえば、レコード操作を実行するインラインスクリプトを記述するのではなく、レコードベースラインを作成および更新するアクションを使用します。
    データ型を変更しないようにする
    インラインスクリプトが入力または出力で想定されているものと同じデータ型の情報を提供することを確認して、ランタイムエラーを回避します。
    var キーワードで変数を宣言して変数を作成する
    var」キーワードを使用して変数を宣言し、適切な JavaScript スコープ内に留まるようにします。値を割り当てて変数を作成すると、JavaScript によってその変数がグローバルオブジェクトに添付され、変数値がローカルスコープ外で存続してエラーが発生する可能性があります。
    For Each フローロジックとフローデータオブジェクトを使用してレコード出力を処理する
    インラインスクリプトは、For Each フローロジックから [複数のレコードの検索] アクションの [レコード] 出力にのみアクセスできます。[複数のレコードの検索] アクションをフローに追加して、レコード出力を生成します。For Each フローロジックをフローに追加して、レコード出力の各レコードを処理します。fd_data オブジェクトとアイテムオブジェクトを使用して、For Each フローロジックへのインラインスクリプト参照を作成します。たとえば、この参照では、For Each フローロジックがフローアウトライン「fd_data._2__for_each.item」の 2 番目のアイテムであると想定しています。
    先行入力候補を使用して、フローおよびアクションデータへの参照を生成します。
    fd_data オブジェクトを使用してフローおよびアクションデータへの参照を作成します。「fd_data」と入力すると、スクリプトエディターに既存のフローとアクションデータの先行入力候補が表示されます。フローおよびアクションデータへの参照をビルドする候補を選択します。
    注:
    [アイテム] オブジェクトを使用する For Each フローロジックのレコードデータを参照してください。
    スコープループカウンター

    スクリプトループには最大反復数がないため、有効な終了条件がない場合はループが無限に実行されます。

    有効な終了条件があることを確認するには、インラインスクリプトまたはアクション内のスクリプトステップでスコープループカウンターを使用します。 for (i=0; i< length; i++)var を追加し、for (var i=0; i< length; i++) を取得します。

    ライセンスに関する考慮事項

    データ連携 API を呼び出すインラインスクリプトは、統合ハブ のライセンスの対象となります。

    コードエディター

    コードエディターは、インラインスクリプトのテキストエディターをサポートします。

    コードエディターには、サポートされている言語サービスおよびインラインスクリプト用の機能があります。
    • 構文の色分け、インデント、行番号、閉じ括弧と引用符の自動作成
    • 自動提案およびオートコンプリート
    図 : 4. コードエディター
    コードエディター ワークフロースタジオ

    編集のヒント

    • コード内の任意の位置に固定スペースを挿入するには、Tab キーを押します。
    • コードの 1 行をインデントするには、行の先頭の空白をクリックして Tab キーを押します。
    • コードの 1 行以上の行をインデントするには、対象のコードを選択して Tab キーを押します。インデントを減らすには、Shift+Tab キーを押します。
    • コードの行の先頭から 1 つのタブを削除するには、行をクリックして Shift+Tab キーを押します。
    • 変数を宣言するには、var キーワードを使用して、適切な JavaScript スコープ内に留まるようにします。