インラインスクリプト
コーディング経験のあるユーザーが、アクションまたはフローの構成中に入力値を設定および変更するインラインスクリプトを記述できるようにします。インラインスクリプトを使用して、小さな形式変換、データ変換、または演算操作を必要とする入力値を変更します。
変換関数を使用して、スクリプティングなしで入力値を変更することもできます。利用可能なオプションのリストについては、「変換関数」を参照してください。
- フローのアクションを構成する際のアクション入力
- フローのアクションを構成する際のアクション出力
- フローのフローロジックを構成する際のフローロジック入力
- フローのフローロジックを構成する際のフローロジック出力
- アクションのステップを構成する際のステップ入力
- フローのサブフローを構成する際のサブフロー入力
- フローのサブフローを構成する際のサブフロー出力
インラインスクリプトは、入力が想定するものと同じデータ型の値を返す必要があります。たとえば、レコード入力のインラインスクリプトは GlideRecord オブジェクトを返す必要があり、日付入力のインラインスクリプトは日時値を返す必要があります。インラインスクリプトを含むアクションとフローを常にテストし、フロー実行の詳細にランタイムエラーがないことを確認します。
スクリプト作成者は、Now Platform テーブル構造とフィールドタイプに精通している必要があります。さらに、ServiceNow API を使用してレコードとシステムデータを操作する方法を知っている必要があります。
メリット
- カスタムアクションやカスタムフローを作成しなくても、データ変換や変換を簡単に行うことができます。
- スクリプトの影響を受ける入力データを特定できます。
- スクリプティング機能へのアクセスを、利用可能な ServiceNow API に精通しているユーザーまたはグループに制限することができます。
インラインスクリプトへのアクセス
flow_designer_scripting ロールまたは [スクリプティングを許可] 委任開発権限のいずれかを付与することで、オンラインスクリプティングへのアクセス権をユーザーに付与することができます。ロールと開発者権限の両方で、フローデザイナー 入力ごとにスクリプトボタンフィールドが表示されます。
スクリプトボタン
ユーザーがインラインスクリプトを作成できるようにすると、フローデザイナー によりフローおよびステップ入力の横にスクリプトボタンが表示されます。
[スクリプト] ボタンをクリックするとスクリプトエディターが開き、標準の入力インターフェイスが置き換えられます。入力値を計算するスクリプトを入力します。
スクリプトに、スクリプトの結果を含む「return」ステートメントが含まれていることを確認してください。たとえば、「return shortDesc;」は「shortDesc」変数の値を返します。
[スクリプトを折りたたむ (Collapse Script)] ボタンをクリックすると、スクリプトエディターが非表示になり、読み取り専用バージョンの入力が表示されます。[スクリプトを展開 (Expand Script)] ボタンをクリックすると、スクリプトエディターが表示され、スクリプトを編集できるようになります。
フローデザイナー データオブジェクト
fd_data」オブジェクトを使用して、前のアクションとステップのデータにアクセスできます。fd_data オブジェクトを使用して、フローの特定の出力にドット連結します。スクリプトエディターの先行入力の提案を使用して、特定の出力値を選択できます。たとえば、fd_data と入力し、先行入力の提案から _2__for_each.item を選択して、fd_data._2__for_each.item へのドット連結参照を作成します。この参照は、フローの 2 番目の出力 (この例では For Each フローロジックアイテム) からのデータにアクセスします。フローデザイナー は、アクション、フロー、またはサブフローを保存するたびにデータオブジェクトを更新します。先行入力の提案にターゲットが含まれていない場合は、アクション、フロー、またはサブフローを保存し、ピリオド文字を再入力して提案のリストを更新してみてください。
| データターゲット | 参照構文 | 例 |
|---|---|---|
| アクションの入力 | fd_data.action_inputs。action-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; |
デザインの検討
次の設計ガイドラインに従って、再利用可能かつメンテナンス可能なインラインスクリプトを作成してください。
- 再利用不可能な短いロジック用のインラインスクリプトを記述する
- インラインスクリプトを使用して、特定の入力およびユースケースのデータをフォーマットまたは変更します。標準的で再利用可能な入力データの変換とフォーマットの操作の場合は、代わりに変換関数を選択してください。
- 利用可能な変換関数の確認
- フローデザイナー は、データ変換とフォーマットの操作のための標準的な変換関数のリストを提供します。カスタムスクリプトソリューションを記述して管理するのではなく、既存の変換関数が利用可能な場合はそれを選択してください。
- インラインスクリプトではなく、再利用可能なコードのカスタムアクションまたはサブフローを作成する
- ソースデータのデータ型の変更など、再利用可能または複合データロジックのカスタムアクションまたはサブフローを作成します。また、コードに慣れていないフローデザイナー向けにカスタムアクションやサブフローを提供することもできます。
- アクションとフローの機能を複製しないようにする
- アクションとフローの機能を複製するインラインスクリプトは記述しないでください。たとえば、レコード操作を実行するインラインスクリプトを記述するのではなく、レコードベースラインを作成および更新するアクションを使用します。
- データ型を変更しないようにする
- インラインスクリプトが入力または出力で想定されているものと同じデータ型の情報を提供することを確認して、ランタイムエラーを回避します。
- 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 を呼び出すインラインスクリプトは、統合ハブ のライセンスの対象となります。
コードエディター
コードエディターは、インラインスクリプトのテキストエディターをサポートします。
- 構文の色分け、インデント、行番号、閉じ括弧と引用符の自動作成
- 自動提案およびオートコンプリート
編集のヒント
- コード内の任意の位置に固定スペースを挿入するには、Tab キーを押します。
- コードの 1 行をインデントするには、行の先頭の空白をクリックして Tab キーを押します。
- コードの 1 行以上の行をインデントするには、対象のコードを選択して Tab キーを押します。インデントを減らすには、Shift+Tab キーを押します。
- コードの行の先頭から 1 つのタブを削除するには、行をクリックして Shift+Tab キーを押します。
- 変数を宣言するには、
varキーワードを使用して、適切な JavaScript スコープ内に留まるようにします。