Glide リストフィールドの操作Issue リストビューで Glide リスト (glide_list) フィールドを操作する場合は、いくつかの制限/制約があります。 Glide リストフィールド (例えば、インシデントのウォッチリスト) で検索を実行しようとしても、リストの上部にある検索ボックスは利用できません。 [Group By (グループ化)] オプションは、Glide リストフィールドでは使用できません。 [Glide リスト] フィールドでアルファベット順にソートできません。Releaseすべての ServiceNow リリースCause参照フィールドの動作と同様に、Glide リスト (glide_list) タイプのフィールドには、参照されるレコードの Sys ID が保存されます。 ただし、類似点はそこまでで、このフィールドタイプには複数の Sys ID とメールアドレスを保存できます。 データベースでは、これはコンマ区切りの文字列として保存されます。 例えば、ウォッチリストに何人かのユーザーを含むインシデントは次のようになります。 このフィールドの値を取得するスクリプトを実行すると、次の出力が返されます。 *** Script: 62826bf03710200044e0bfc8bcbe5df1,5137153cc611227c000bbd1bd8cd2007,sampleuser@test.com これを見ると、保存されている値に対して検索が行われるため、表示値で検索を実行しても成功しません。 つまり、「watch_listLIKEAbel Tuter」は「watch_listLIKE62826bf03710200044e0bfc8bcbe5df1」と同じではありません。そのため、ソートはこのフィールドタイプでは無効になります。 グループ化はレコードの保存された値に対して行われるため、この動作はこのフィールドタイプのグループ化にも影響します。 例えば、2 つのレコードが参照値について同じ配置を持つことは保証されません。 つまり、あるレコードのウォッチリストには Abel Tuter と David Loo があるかもしれませんが、別のレコードでは David Loo と Abel Tuter となっている可能性があります。 Resolutionこの制限に対する有効な解決策はありませんが、実現したいことに基づいて、いくつかのワークアラウンドがあります。 検索 次の方法により、リストビューで正常に検索できます。 リストフィルターを展開します。検索するリストフィールドを選択します。 非常に限られた検索演算子のリスト (含む、含まない、空である、空ではない) が表示されます。演算子を選択します。参照検索ボックスで、ルックアップアイコンを使用して参照レコードを選択します。検索を実行します。 注意:リストビューのレイアウトに Glide リストフィールドを表示している場合は、値の出力と混同しないでください。検索は期待どおりに機能し、Glide リストがその検索条件に一致するレコードのみを返します。[Glide リスト] フィールドで使用可能なすべての値が表示されます。 グループ化 [Glide リスト] フィールドでグループ化するには、それぞれの辞書エントリーに can_group=true 属性を追加します。これにより、[グループ化 (Group By)] オプションが使用できるようになります。出力は論理的にグループ化されていないように見えるため、上記の「原因」セクションで説明した動作に注意してください。 スクリプティング スクリプティングの際は、製品ドキュメントの以下の情報に注意してください。 スクリプトからの Glide リストの参照Using indexOf("searchString") (indexOf("searchString") の使用) 特にフィルタリング (addQuery または addEncodedQuery) を使用したスクリプティングのもう 1 つのポイントは、表示値を取得して (必要なルックアップを実行して)、目的のレコードの Sys ID を返すヘルパー関数を作成することです。 例えば、次のスクリプトは、Abel Tuter がウォッチリストに含まれているインシデントを検索します。 var inc = new GlideRecord('incident');inc.addEncodedQuery('watch_listLIKE' + getUserSID('Abel Tuter'));inc.query(); while (inc._next()) { gs.print(inc.number + " | " + inc.watch_list);} function getUserSID(name) { var user = new GlideRecord('sys_user'); if (user.get('name', name)) { return user.sys_id; }} Sys ID の代わりに、参照レコードの表示値を出力する getDisplayValue 関数の呼び出しを使用することもできます。 その場合は、 gs.print(inc.number + " | " + inc.watch_list); が次のようになります。 gs.print(inc.number + " | " + inc.watch_list.getDisplayValue());