---
sourceDocument: Yokohama ビルドのワークフロー
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/yokohama/build-workflows

 Release :

    - yokohama

ft:locale :

    - ja-JP

ft:publication_title :

    - Yokohama ビルドのワークフロー

ft:clusterId :

    - crworkflow

bundleId :

    - crworkflow

workflow :

    - Creator


---

# 複合データのスクリプトサポート

# 複合データのスクリプトサポート {#ariaid-title1}

* リリースバージョン: Yokohama
* 
* 更新日 2025年01月30日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：6分

スクリプトから複合データを作成して参照します。データストリーム、REST ステップ応答、または複数のレコードの検索ステップからソースデータが取得される場合は、スクリプトを使用します。

次のソースからデータを取得する場合は、スクリプトを使用して複合データを作成します。  
{#script-support-complex-data__table_b4b_4cp_phb__entry__2}

| データソース | 複合データの作成/マッピング元 |
|-|-|
| データストリームアクション応答ストリーム | スクリプトパーサーステップ |
| REST ステップ応答 | スクリプトステップ |
| 「複数レコードのルックアップ」ステップ | スクリプトステップ |
[表 : 1. スクリプトを必要とするデータソース]

{#script-support-complex-data__table_b4b_4cp_phb}

## データストリームアクション応答ストリーム {#script-support-complex-data__section_cnh_yt4_phb}

データストリームアクションは、パーサースクリプトを使用して、ストリームアイテム値を複合オブジェクト値にマッピングします。パーサースクリプトを記述する場合は、データストリーム形式に適した JavaScript メソッドを使用してください。たとえば、[JSON - スコープ付き](https://www.servicenow.com/docs/access?context=JSONScopedAPI&version=yokohama&pubname=yokohama-api-reference&ft:locale=en-US)クラスを使用して、JSON データストリームを解析またはエンコードします。

パーサースクリプトは、データストリームの入力オブジェクトと出力オブジェクト、および targetObject プロパティにアクセスできます。複合データを作成するための応答ストリームの解析の詳細については、「[データストリームアクション](https://www.servicenow.com/docs/access?context=create-data-stream-action&version=yokohama&pubname=yokohama-integrate-applications&ft:locale=en-US)」を参照してください。

## REST ステップ応答 {#script-support-complex-data__section_wyb_dh4_nhb}

REST ステップ応答は、スクリプトステップで解析することによって 1 つ以上の複合オブジェクトに変換できます。スクリプトステップから応答にアクセスするには、入力スクリプト変数を作成し、それを前の REST ステップからの応答ペイロードにマッピングする必要があります。スクリプト入力変数の作成の詳細については、「[スクリプトステップ](https://servicenow-prod.fluidtopics.net/KBoZv0BOISJp0li1~KkKmA "再利用可能なアクションの中実行するカスタムの JavaScript を追加します。ほとんどのコア アクションおよびステップは一般的な使用例に適していますが、コア ステップでは満たされない動作を実行するスクリプト ステップを作成できます。")」を参照してください。

REST 応答値を複合オブジェクト値にマッピングするスクリプトを記述します。REST 応答スクリプトを記述する場合は、JSON parse() メソッドなどの応答形式に適した JavaScript メソッドを使用してください。  
注:  
複合データを文字列入力のソースとして使用すると、ワークフロースタジオ によって自動的に JSON 文字列に変換されます。

複合データから REST 要求を作成するためにスクリプトステップを使用する必要はありません。前のアクションまたはステップで複合データを生成し、それを REST ステップの文字列入力にマッピングすることができます。実行時に、アクションまたはフローは複合データを JSON 表現に変換します。

たとえば、[動的入力を開始するには](https://servicenow-prod.fluidtopics.net/fwAbNd4fptruI_WSO2nV4w#getting-started-dynamic-input "フローで使用可能なすべてのタイプの動的入力を使用する方法を示すアクションのサンプルを作成します。") でデータ収集アクションに使用されるスクリプトステップを参照してください。テーブル名およびフィールド名を取得するためのデータ収集アクションは、どちらもスクリプトステップを使用して REST 応答を JSON オブジェクトに解析します。どちらのデータ収集アクションでも、複合データを JSON オブジェクトとして格納する出力変数が作成されます。

## 「複数レコードのルックアップ」ステップ {#script-support-complex-data__section_osw_gzn_nhb}

フローでは、For Each フローロジックを使用してレコードリストを処理できますが、アクションにはスクリプトステップが必要です。スクリプトステップにより、For Each フローロジックは `For` ループや `While` ループなどの JavaScript に置き換わります。

スクリプトステップからレコードデータにアクセスするには、入力スクリプト変数を作成し、それを前のルックアップステップからのレコードデータにマッピングする必要があります。スクリプト入力変数の作成の詳細については、「[スクリプトステップ](https://servicenow-prod.fluidtopics.net/KBoZv0BOISJp0li1~KkKmA "再利用可能なアクションの中実行するカスタムの JavaScript を追加します。ほとんどのコア アクションおよびステップは一般的な使用例に適していますが、コア ステップでは満たされない動作を実行するスクリプト ステップを作成できます。")」を参照してください。

ユーザーレコードリストを連絡先オブジェクトのアレイに変換するアクションの例については、「[レコードリストからオブジェクトのアレイを生成するカスタムアクションの作成](https://servicenow-prod.fluidtopics.net/TAPCOchVgPGkAkRFf3BoGA "ユーザーレコードリストからオブジェクトのアレイを生成します。スクリプトステップを使用してレコードリストを反復処理する方法について説明します。")」を参照してください。  
注:  
\[複数のレコードの検索\] アクションでは、レコードデータを複合データに変換するためのスクリプトステップは必要ありません。レコードをオブジェクトに変換し、For Each フローロジックをカスタムアクションに適用するカスタムアクションを作成できます。スクリプトを使用せずに複合オブジェクトを作成する例については、「[レコードからオブジェクトを生成するカスタムアクションの作成](https://servicenow-prod.fluidtopics.net/6kME1MMeB8Sr3CPeRGHR1g "ユーザーレコードからオブジェクトを生成します。アクション出力を使用してレコード値からオブジェクトを作成する方法について説明します。")」と「[リスト内の各レコードのオブジェクトを生成するカスタムフローの作成](https://servicenow-prod.fluidtopics.net/RdssPCTvPjE2bXJqq2hUzw "リスト内の各ユーザーレコードのオブジェクトを生成します。フローロジックを使用してレコードリストを反復処理する方法について説明します。")」を参照してください。

## ドット連結オブジェクト構造 {#script-support-complex-data__section_lll_t1z_hhb}

構造のパスをドット連結することで、オブジェクトの構造から要素を参照することができます。複合データパスはすべてデータソースの名前で始まります。これは、入力のグローバルオブジェクト、出力のグローバルオブジェクト、またはスクリプトで作成したアレイまたはオブジェクトの名前です。

パスの次は、ピリオド文字 (ドットとも呼ばれます) で区切られた、参照される各構造要素の名前です。構造要素の名前をリストすることは、テーブル構造を特定の参照フィールドにリストする参照フィールドをドット連結することと同じです。  
注:  
ドット連結パスには、ラベルではなく構造要素の名前が常にリストされます。

たとえば、連絡先オブジェクトを出力変数として定義するとします。オブジェクトの構造は次のとおりです。  
図 : 1. 連絡先オブジェクトのサンプル  
{#script-support-complex-data__table_lck_5ct_hhb__entry__4}

| 構造内での場所 | ラベル | 名前 | タイプ |
|-|-|-|-|
| 親 | 連絡先 | 連絡先 | オブジェクト |
| 子 | 名 | first_name | 文字列 |
| 子 | 姓 | last_name | 文字列 |
| 子 | メールアドレス | email_addresses | Array.Object |
| 孫 | メールアドレス | email_address | オブジェクト |
| 曾孫 | タイプ | タイプ | 選択肢 |
| 曾孫 | メール | メール | 文字列 |
| 子 | 電話 | telephone_number | Array.Object |
| 子 | 郵送先 | mailing_address | Array.Object |
[ ]

{#script-support-complex-data__table_lck_5ct_hhb}

\[名\] 構造要素へのドット連結パスは `outputs.contact.first_name` になり、\[メール\] 構造要素へのパスは `outputs.contact.email_addresses[0].email` になります。これは、アレイの個々の要素をその JavaScript インデックス値で指定する必要があるためです。  
注:  
ドット連結パスでは、アレイ内の繰り返される要素の名前が省略されます。たとえば、オブジェクトのアレイはオブジェクト要素名を指定する必要はありません。ただし、オブジェクトは他の要素のコンテナであるため、ドット連結パス内でオブジェクトの子要素を指定できます。

## 一般的なガイドライン {#script-support-complex-data__id_epj_nvb_ptb}

複合データを使用してスクリプトを作成する場合は、次の一般的なガイドラインを念頭に置いてください。

文字列入力を使用して複合データを JSON 文字列に変換する
:   複合データを文字列入力にマッピングすると、ワークフロースタジオ によって自動的に JSON 文字列に変換されます。スクリプトを記述する代わりに、文字列入力を REST ステップに追加し、前のアクションまたはステップからの複合データにマッピングすることができます。

オブジェクトをテンプレートとして保存する
:   オブジェクトをテンプレートとして保存して、他のアクション、フロー、およびスクリプトステップで再利用できるようにします。

以前のデータにアクセスするためのスクリプト入力変数を作成する
:   アクション入力または前のステップからアクセスするデータのスクリプト入力変数を作成します。スクリプト入力変数を入力またはステップデータピルにマッピングします。たとえば、スクリプト入力変数を、前のステップで検索したユーザーレコードリストにマッピングします。

複合データを格納するスクリプト出力変数を作成する
:   スクリプトで作成した任意の複合データを格納するスクリプト出力変数を作成します。スクリプト出力変数は、スクリプトで定義された値と一致する必要があります。たとえば、複数の連絡先オブジェクトを格納するオブジェクトの連絡先アレイを作成します。連絡先オブジェクトをテンプレートとして保存し、再利用できるようにします。

アクション出力をスクリプト出力変数にマッピングする
:   カスタムアクションで複合データを出力する場合は、アクション出力を追加し、スクリプトステップ出力変数のデータピルにマッピングします。たとえば、連絡先アレイを作成し、前に保存した連絡先オブジェクトテンプレートをロードします。アクション出力を、スクリプトステップによって生成された連絡先アレイにマッピングします。
* **[レコードリストからオブジェクトのアレイを生成するカスタムアクションの作成](https://servicenow-prod.fluidtopics.net/TAPCOchVgPGkAkRFf3BoGA)**   
  ユーザーレコードリストからオブジェクトのアレイを生成します。スクリプトステップを使用してレコードリストを反復処理する方法について説明します。
* **[レコードリストから文字列のアレイを生成するためのカスタムアクションの作成](https://servicenow-prod.fluidtopics.net/x5EN_9bX_AAKa_550CXeLQ)**   
  ユーザーロールレコードリストから文字列のアレイを生成します。スクリプトステップを使用してレコードリストを反復処理する方法について説明します。

