クライアント側スクリプトのユースケース
クライアントサイドスクリプトのユースケースには、フィールドメッセージの表示、フォームの色の変更、フィールドの追加、UI ルーティングアクションの作成などがあります。
サービスカタログのチェックアウトへのフィールドの追加
これは、カート以外のレイアウトマクロを使用して、[要求元:] フィールドの下のチェックアウトに [会社 (Company)] フィールドを追加する例です。つまり、glide.sc.use_cart_layouts は falseです。
始める前に
必要なロール:admin
このタスクについて
このフィールドは、指定された値をサービスカタログ要求の [会社 ] フィールドに渡します。
この例では、次のことを前提としています。
- 2 ステップチェックアウトを使用するインスタンス。2 ステップチェックアウトが有効になっていない場合は、開始する前に有効にします。詳細については、「Service Catalog checkout models」を参照してください。
- この例では、サービスカタログ要求フォームの [会社] フィールドに値を入力します。フィールドがフォームに表示されない場合は、開始する前にフォームを設定します。手順については、「Personalize a form」を参照してください。
手順
タスクの結果
オートフィル機能の追加
オートフィル機能の追加は、インシデントテンプレート、自動アサイン、クイックコール、コールスクリプト、または自動入力とも呼ばれます。
- ルックアップテーブルを作成します。
- キーフィールドの [Subcategory] に入力します。
- オートフィルされた [ 簡単な説明] フィールドに入力します。
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) { return; }
var newrec = gel('sys_row');
//Check if new record
if (newrec.value == -1) {
var lookup = new GlideRecord('u_short_desc_lookup');
lookup.addQuery('u_subcategory', g_form.getValue('subcategory'));
lookup.query();
var temp; //temp var - reusable
if (lookup.next()) {
temp = lookup.u_short_description;
if (null != temp) { //Set the form value from lookup if there is a lookup value
g_form.setValue('short_description', temp); }
else {
g_form.setValue('short_description', "" ); } }
else {
//If a lookup record does not exist based on lookup.addQuery
//Then set to UNDEFINED or NULL depending on type
g_form.setValue('short_description', ""); } }
}多くのフィールドに入力したり、コールスクリプトの質問を [コメント ] フィールドに取り込んだりして、コールセンターの担当者が技術者に渡すための適切な情報を収集することができます。
- パスワードをリセットするフィールドの設定
-
ルックアップテーブルに、次のキーとオートフィル設定を持つレコードがあります。
- サブカテゴリ = パスワード
- 簡単な説明 = パスワードリセット
ステータス変更時のフォームの色の変更
ステータス変更時にフォームのフォームフィールドの色を変更します。スクリプトは、HTML DOM を介してアクセス可能なページ上のオブジェクトのプロパティを調整するために、簡単に変更できます。
名前:ステータス変更時のフォームの色の変更
タイプ:クライアントスクリプト
説明:ステータス変更時にフォームのフォームフィールドの色を変更します。スクリプトは、HTML DOM を介してアクセス可能なページ上のオブジェクトのプロパティを調整するために、簡単に変更できます。
function onChange(control, oldValue, newValue, isLoading) {
var elementID = gel("incident.priority");
switch(newValue) {
case "1": elementID.style.backgroundColor = "red"; break;
case "2": elementID.style.backgroundColor = "tomato"; break;
case "3": elementID.style.backgroundColor = "orange"; break;
case "4": elementID.style.backgroundColor = "yellow"; break;
case "5": elementID.style.backgroundColor = "green"; break;
default: elementID.style.backgroundColor = "white"; break; } }UI ルーティングアクションの作成
このソリューションを使用すると、インシデントまたは要求アイテムのどちらであるかを知らなくても、サービスデスクでレコードを作成できます。その後、サービスデスクはレコードを適切なテーブルにルーティングできます。
始める前に
必要なロール: admin
手順
フィールドメッセージの表示
JavaScript alert() を使用する代わりに、見た目をすっきりさせるために、フォーム自体にエラーを表示できます。メソッド showFieldMsg() および hideFieldMsg() を使用して、フィールド自体のすぐ下にメッセージを表示できます。
showFieldMsg と hideFieldMsg は、g_form オブジェクトで使用できるメソッドです。
これらのメソッドは、レコード (インシデント、問題、および変更フォーム) のフォームビューを変更するために使用されます。これらのメソッドは他のクライアントスクリプトでも使用できますが、期待どおりに機能するかどうかを確認するためにテストする必要があります。
ロード時にフォームにフィールドメッセージが表示されると、フォームがスクロールしてフィールドメッセージが表示されます。フィールドメッセージが画面の外にあったためにユーザーが見落とすということがないようにします。
グローバルプロパティ glide.ui.scroll_to_message_field は、フォームフィールドが画面外にある場合の自動メッセージのスクロール (フォームからコントロールまたはフィールドまでスクロール) を制御します。
| メソッドの詳細 | パラメーター | 例 |
|---|---|---|
| showFieldMsg(input, message, type, [scrollform]) |
|
エラーメッセージ 情報メッセージ |
| hideFieldMsg(input) |
|
メッセージの削除
|
従来のサポート
showErrorBox() メソッドと hideErrorBox() メソッドは推奨されません。
UI アクションでのクライアントおよびサーバーコードの使用
スクリプトを使用して、サーバー側でレコードを更新する前に、クライアント側で UI アクションがクリックされたときに入力を検証できます。ユーザーは、必須フィールドを検証してレコードを更新するのにボタンを 2 回クリックする必要はありません。
スクリプトはクライアント側の検証のためにクライアント関数を呼び出し、合格すると UI アクションがタスクを完了します。onclick なしで実行されるコードのステートメントは 、クライアント関数が実行されなくなるまでサーバー側の関数が実行されないようにします。成功すると、サーバー側の関数が実行され、レコードが更新されます。
// Client-side onclick function
function resolveIncident() {
// Set the 'Incident state' and 'State' values to 'Resolved', and display mandatory fields
g_form.setValue('incident_state', 6);
g_form.setValue('state', 6);
g_form.setValue('resolved_by', g_user.userID);
// Call the UI action and skip the 'onclick' function
gsftSubmit(null, g_form.getFormElement(), 'resolve_incident'); //MUST call the 'Action name' set in this UI Action
}
// Code that runs without 'onclick'
// Ensure call to server-side function with no browser errors
if (typeof window == 'undefined')
serverResolve();
// Server-side function
function serverResolve() {
current.incident_state = IncidentState.RESOLVED;
current.state = IncidentState.RESOLVED;
current.resolved_by = gs.getUserID();
current.update();
}
gsftSubmit(文字列 control, オブジェクト form, 文字列 action_name)
必須フィールドを確認し、onSubmit() クライアントスクリプトを実行した後、ユーザーが UI アクションをクリックした場合と同様にフォームを送信します。単一の UI アクションでクライアント側のコードとサーバー側のコードを呼び出すことができます。
| 名前 | タイプ | 説明 |
|---|---|---|
| コントロール | 文字列 | ユーザーのクリックをシミュレートするフォームボタンの名前。それ以外の場合は null を使用します。 |
| フォーム | オブジェクト | オプション。送信された入力を含むフォーム要素。この値を取得するには、g_form.getFormElement() メソッドを呼び出します。 |
| action_name | 文字列 | アクション名。この値は、UI アクション [sys_ui_action] テーブルにリストされているレコードで提供されます。 たとえば、 |