ファイルタイプのデータソース

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:15分
  • パスと認証情報を指定して、ローカルソース、リモートネットワークサーバー、または別のインスタンスからファイルをインポートします。

    ファイルタイプのインポートセットの場合は、ファイル取得方法のリスト (SFTP、FTP、FTPS、HTTP、HTTPS、および SCP) から選択できます。
    注:
    FTPS は一部のファイアウォールベンダーでサポートが終了しているため、お勧めしません。代替手段として SFTP の使用を検討してください。

    ファイル取得手法

    ファイルが存在する場所から ServiceNow にファイルをコピーしてインポートセットにロードするには、次のファイル取得方法を使用できます。

    インポートと互換性のあるファイルを定義した後、ファイルのインポート方法を定義します。

    注:
    インポートを成功させるには、FTP サーバーとクライアントをここで選択したものと同じ認証メカニズムに設定する必要があります。
    方法 説明
    添付ファイル レコードに添付ファイルを追加して管理し、そのファイルをインポートセットにインポートします。
    SFTP SFTP を使用してファイルを取得します。サーバー名とログイン認証情報のフィールドが提供されます。
    FTP ネットワーク内の FTP サーバーからファイルを取得します。サーバー名とログイン認証情報のフィールドが提供されます。
    注:
    FTP 転送はクリアーテキストとして送信され、暗号化することはできません。可能な場合は常に、SCP または SFTP を使用してください。
    FTPS (Auth SSL) [非推奨] FTPS は一部のファイアウォールベンダーでサポートが終了しているため、お勧めしません。代替手段として SFTP の使用を検討してください。

    セキュアソケットレイヤー (SSL) プロトコルを介して発行される FTP セキュア認証コマンド。この方法は、SSL を介した明示的 FTP とも呼ばれます。

    FTPS (Auth TLS) [非推奨] FTPS は一部のファイアウォールベンダーでサポートが終了しているため、お勧めしません。代替手段として SFTP の使用を検討してください。

    トランスポートレイヤーセキュリティ (TLS) プロトコルを介して発行される FTP セキュア認証コマンド。この方法は、TLS を介した明示的 FTP とも呼ばれます。

    FTPS (Implicit SSL) [非推奨] FTPS は一部のファイアウォールベンダーでサポートが終了しているため、お勧めしません。代替手段として SFTP の使用を検討してください。

    暗黙的なセキュリティでは、FTPS サーバーは、セキュア接続に使用するクライアント (990) の特定のポートを定義します。暗黙的なセキュリティは、FTPS クライアントが FTPS サーバーに接続した瞬間に SSL 接続から自動的に始まります。

    FTPS (Implicit TLS) [非推奨] FTPS は一部のファイアウォールベンダーでサポートが終了しているため、お勧めしません。代替手段として SFTP の使用を検討してください。

    暗黙的なセキュリティでは、FTPS サーバーは、セキュア接続に使用するクライアント (990) の特定のポートを定義します。暗黙的なセキュリティは、FTP クライアントが FTP サーバーに接続した瞬間に TLS 接続から自動的に始まります。

    HTTP HTTP を使用してファイルを取得します。サーバー名とログイン認証情報のフィールドが提供されます。
    重要:
    HTTP および HTTPS プロトコルの場合、ファイルパスは自動的に URL エンコードされます。これらのプロトコルのいずれかを使用する場合は、URL エンコードされたファイルパスを指定しないでください。
    HTTPS HTTPS を使用してファイルを取得します。サーバー名とログイン認証情報のフィールドが提供されます。ServiceNow インスタンス間でデータを転送するには、この方法を使用します。
    SCP Secure Copy プロトコル (SCP) は、Secure Shell (SSH) プロトコルを使用して、ローカルホストとリモートホスト間または 2 つのリモートホスト間でファイルを安全に転送します。

    ファイルデータソースの例

    これらの例では、さまざまなファイルタイプをデータソースとしてインポートする方法について説明します。

    Excel データソースファイル

    XLSX 形式と従来の XLS 形式の両方を使用してインポートできます。XLS は、2003 以前のバージョンの Excel で作成されたスプレッドシートのデフォルト形式です。XLSX は Excel 2007 以降のデフォルト形式です。最適なパフォーマンスを得るには、従来の XLS の代わりに XLSX を使用してください。

    注:
    • すべての .xls ファイルでは、1904 年の日付システムではなく、1900 年の日付システムを使用する必要があります。1904 年日付システムでは、スプレッドシートに表示される年よりも 4 年前の日付がインポートされます。日付システムの詳細については、 MS Support を参照してください。
    • 大文字のブール値が (TRUE/FALSE) のファイルを Excel からインポートすると、両方の値が常に false に変換されます。この動作を防ぐには、glide.transform.boolean.casesensitive プロパティを false に設定します。
    図 : 1. Microsoft Excel デモデータ
    Microsoft Excel デモデータ

    XML データソースファイル

    各行の XPath
    XML データソース定義には、[各行の XPath] を指定するための追加のフィールドがあります。このフィールドは、子がインポートセットテーブルの行に変換される要素を選択するための XPath 式です。選択された各要素により、インポートセットテーブルに行が作成されます。選択した要素の子が行の列に変換されます。たとえば、以下のサンプル XML ファイルから資産情報をインポートするには、XPath 式を /export/asset として指定する必要があります。この式は 3 つの <asset> 要素が含まれているため、3 つの行が作成されます。//asset を指定することもできますが、この式は大きなファイルの場合はあまり効率的ではありません。XML ローダーを使用する場合は、XPath 式の場所の絶対パスフォームを使用します。つまり、厳密に必要な場合を除き、// を含む式は使用しないでください。

    サイズの大きい XML ファイルでは、制限が不十分な XPath 式を指定しないように注意してください。たとえば、次のサンプルファイルではドキュメント (ルート) 要素と一致するため、/export という式は正しくありません。一般に、ドキュメント内のすべてを単一の行にする場合を除き、ルート要素に一致する XPath 式を指定しないでください。サイズの大きい XML ファイルをロードするときに制限が不十分な XPath 式を指定すると、処理時間が長くなり、出力が不正確になる可能性があります。このため、数行分のデータのみを含む小さな XML ファイルを使用して、XML データソース仕様をテストおよびデバッグすることをお勧めします。仕様をテストしたら、完全なファイルを使用して再度実行できます。

    <userInfo> 要素
    <asset> 内に含まれる <userInfo> 要素には子要素が含まれることに注意してください。このタイプのネストは、<userInfo> 要素の XML を含む [userInfo] という列を作成します。[子ノードを展開 (Expand child nodes)] がオンの場合は、[userInfo/lastName] および [userInfo/firstName] の個々の列も作成されます。[子ノードを展開 (Expand child nodes)] がオフの場合は、[userInfo] XML 列のみが作成されます。
    XML ファイルからのデータのロード
    XML ファイルからデータをロードする場合、ServiceNow は最初の 10 レコードをサンプリングして、データを保持するために必要なフィールドを決定します。最初の 10 件のレコードのいずれにもフィールドの値が指定されていない場合、ServiceNow はインポートされたデータを保持するテーブルにそのフィールドを追加しません。最初の 10 件のレコードのうち少なくとも 1 件が、インポートされるフィールドの値を指定していることを確認してください。
    XML データソースに使用される XML ファイルの最初の 10 ノードにフィールドが含まれていない場合、そのフィールドは無視されます。フィールドをインポートして無視されないようにするには、フィールドが最初に見つかったノードの位置以上の値を持つ glide.db.impex.XMLLoader.max.scan_nodes システムプロパティを追加できます。 このプロパティは、すべての XML データソースに適用されます。glide.db.impex.XMLLoader.max.scan_nodes のデフォルトは [10] ですが、[1][2147483647] の値を入力して、インポートに使用する値を決定するためにスキャンするノードの数を指定できます。[-1] を指定すると、XML ファイル内のすべてのノードをスキャンできます。
    重要:
    [-1] を指定するか、glide.db.impex.XMLLoader.max.scan_nodes の値をデフォルトの [10] より大きくすると、すべての XML インポート処理で全体のロード時間が大幅に増加する可能性があります。
    <?xml version= "1.0" encoding= "utf-8" ?><export><asset><assetTag>AT-01939</assetTag><type>Desktop</type><os>Windows 7 Professional</os><lastlogondate>12-07-2010 12:31:24</lastlogondate><userInfo><lastName>Loo</lastName><firstName>David</firstName></userInfo><isenabled>true</isenabled></asset><asset><assetTag>AT-53480</assetTag><type>Desktop</type><os>Windows 7 Professional</os><lastlogondate>09-07-2010 13:25:53</lastlogondate><userInfo><lastName>Merritt</lastName><firstName>Norris</firstName></userInfo><isenabled>true</isenabled></asset><asset><assetTag>AT-55782</assetTag><type>Desktop</type><os>Unknown</os><lastlogondate>01-01-1900 00:00:00</lastlogondate><userInfo><lastName>Currie</lastName><firstName>Mike</firstName></userInfo><isenabled>true</isenabled></asset></export>

    CSV データソースファイル

    CSV ファイルは、プラットフォーム間でファイルを転送するための相互互換性のあるファイル形式として使用されます。CSV ファイルはグリッドを定義するテキストファイルで、カンマで列を定義し、改行で行を定義します。文字列をインポートするための正確な間隔を定義するために、オプションでテキストを引用符で囲むことができます。

    "user_name","name","email","sys_created_on","active"
    "jared.laethem","Jared Laethem","jared.laethem@yourcompany.com","2008-02-24 22:21:32","true"
    "jerrod.bennett","Jerrod Bennett","jerrod.bennett@yourcompany.com","2007-08-12 12:12:18","true"
    "eric.schroeder","Eric Schroeder","eric.schroeder@yourcompany.com","2007-07-03 11:50:20","true"
    "rob.woodbyrne","Rob Woodbyrne","rob.woodbyrne@yourcompany.com","2007-07-03 11:49:57","true"
    "admin","System Administrator","admin@yourcompany.com","2007-07-03 11:48:47","true"
    "christen.mitchell","Christen Mitchell","christen.mitchell@yourcompany.com","2007-05-16 15:26:42","true"
    "rob.phillips","Rob Phillips","rob.phillips@yourcompany.com","2007-01-22 11:25:34","true"
    "davin.czukowski","Davin Czukowski","davin.czukowski@yourcompany.com","2006-07-11 14:01:26","true"
    "luke.wilson","Luke Wilson","luke.wilson@yourcompany.com","2006-02-07 15:29:48","true"
    "bow.ruggeri","Bow Ruggeri","bow.ruggeri@yourcompany.com","2005-07-07 11:39:58","true"
    "don.goodliffe","Don Goodliffe","don.goodliffe@yourcompany.com","2005-05-02 12:28:40","true"
    "david.loo","David Loo","david.loo@yourcompany.com","2005-02-22 16:00:00","true"
    "guest","Guest","guest@yourcompany.com","2004-05-01 17:00:00","true"
    "fred.luddy","Fred Luddy","fred.luddy@yourcompany.com","2004-05-01 17:00:00","true"

    CSV ファイルを使用する場合は、[データソース] フォームの [プロパティ] フィールドを使用してエンコード文字セットを指定できます。このフィールドを表示するには、データソースフォームのフォームレイアウトを構成する必要があります。たとえば、utf-8 エンコーディングを使用するには、[charset=utf-8] と入力します。

    単一列のデータ

    JSON および XML 形式の場合、この機能を使用すると 1 つの列に完全なレコードを格納できます。

    完全なレコードを格納するために使用される列名は data です。

    JSON 形式のデータソースを作成して 1 列でデータを保存する場合、[単一列のデータ] チェックボックスをオンにすると次のオプションが更新されます。
    • [アレイを破棄 (Discard Array)] が選択解除され、フォームから削除されます。
    • [拡張ノード子] が選択され、フォームから削除されます。
    図 : 2. 単一列の JSON データ
    単一列の JSON データ

    データを 1 列で保存する XML 形式のデータソースを作成し、[単一列のデータ] チェックボックスをオンにすると、[拡張ノード子] が選択され、フォームから削除されます。

    図 : 3. 単一列の XML データ
    単一列の XML データ

    カスタム (スクリプトで解析) 形式

    [ファイル][タイプ][カスタム (スクリプトで解析)][形式] を選択すると、[解析スクリプト] と呼ばれる Javascript エディターが表示されます。解析スクリプトを使用して、カスタマイズされた Javascript を作成し、入力行を解析してマップのリストに入れることができます。

    Javascript には、次の 3 つのパラメーターが事前定義されています。
    • line パラメーターは、ソースファイルの行データを含む文字列です。
    • lineNumber は、この行データのソースファイルの行番号です。
    • result パラメーターは、Javascript からの解析結果を返すために使用されます。
    result パラメーターは、Java オブジェクト ScopedScriptParseResult のインスタンスです。result. と入力すると、次の 4 つの使用可能なメソッドが Javascript エディターでスクリプトのオートコンプリートとして表示されます。
    図 : 4. オートコンプリートメニュー
    オートコンプリートメニュー
    • void setSkip(boolean skip);
    • boolean getSkip();
    • addRow(Map<String, String> map);
    • List<Map<String,String>> getRows()

    setSkip() および getSkip() は、スキップフラグを設定および取得します。スキップフラグが true に設定されている場合、Javascript の解析結果全体が無視されます。

    addRow() は、解析行の結果のマップを 1 つ追加し、ステージングテーブルに挿入します。

    getRows() は、現在の解析結果のすべての行を取得し、ステージングテーブルに挿入します。

    1 行のソースデータには、1 つの行または複数の行を含めることができます。行データの処理方法はスクリプト作成者が決定します。たとえば、行データ name=john,computer=windows;name=joe,computer=linux;name=linda,computer=windows の場合、行の区切りとしてセミコロン (;) を使用する場合、この行には 3 行のデータが含まれます。各行は、namecomputer の 2 つのキーを持つマップです。namecomputer がステージングテーブルスキーマの列名になります。次の Javascript のサンプルを使用して、この行データを解析できます。

    (function(line, lineNumber, result) {
     var rowArr = line.split(";");
     var i;
     for(i in rowArr) {
     var map = {};
     var arr = rowArr[i].split(",");
     var x;
     for(x in arr) {
     var items = arr[x].split("=");
     map[items[0]]=items[1];
     }
     result.addRow(map);
     }
    })(line, lineNumber, result);

    スクリプト作成者は、結果がステージングテーブルに挿入されるように結果を追加する必要があります。