コンテンツにスキップ

context.AddMessage

概要

サーバスクリプトでブラウザの下部にメッセージを出力するメソッドです。複数回実行すると複数のメッセージを出力します。

構文

context.AddMessage(message, css);

パラメータ

パラメータ 型 必須 概要
message string ○ メッセージ
css string CSSクラス名

戻り値

戻り値はありません。

使用例

下記の例では、組織ID 3 のユーザが状況項目が完了の場合にメッセージを出力します。

JavaScript
1
2
3
4
5
6
7
try {
    if (context.DeptId === 3 && model.Status === 900) {
        context.AddMessage('条件に該当しました。', 'alert-information');
    }
} catch (e) {
    context.Log(e.stack);
}

CSSクラス名

下記のCSSクラス名が使用できます。独自のCSSを作成し割り当てることも可能です。

CSSクラス名 スタイル
alert-information 青の背景で情報を表します
alert-warning 黄色の背景で警告を表します
alert-success 緑の背景で警告を表します
alert-error 赤の背景でエラーを表します

サンプルコード

1. 完了にしたとき、保存は止めずに入力漏れと予定との差を知らせる

タスク管理のテーブルで、状況を「完了」にして更新したとき、保存は止めずに、実績工数の入力漏れや、予定工数との差をcontext.AddMessageでメッセージに出します。実績工数が空のときは黄色の警告、予定工数の1.2倍を超えたときは青の知らせを出します。

実務での使いどころ

実績工数の入力漏れは、工数の集計や見積の振り返りを狂わせます。項目の入力検証などで必須にすると、未入力のまま完了にできなくなり、現場の作業が止まります。このサンプルでは、完了の操作はそのまま通し、更新したその画面で入力漏れや予定との差を知らせます。保存を止めたいときはcontext.Errorを使います。

事前準備

1:「タスク管理」テーブル(期限付きテーブル)で、以下の項目を有効化してください。

項目コード 内容
数値A(NumA) 実績工数
数値B(NumB) 予定工数

2:スクリプトを登録します。

2-1:「テーブルの管理 > サーバスクリプト」タブで「新規作成」を選択する。
 2-2:タイトル: 任意の名前(例:noticeOnComplete)
 2-3:スクリプト: 下記サンプルコードを貼り付け
 2-4:条件: 「更新前」にチェック

JavaScript
// 完了の状況の値
const COMPLETED_STATUS = 900;
// 実績工数が予定工数のこの倍率を超えたら知らせる
const OVER_RATE = 1.2;

// 状況を完了にして更新するとき、保存は止めずに、入力漏れや予定との差をメッセージで知らせる
function noticeOnComplete() {
    if (model.Status !== COMPLETED_STATUS) {
        return;
    }
    const actual = model.NumA;   // 実績工数
    const planned = model.NumB;  // 予定工数
    if (!actual) {
        context.AddMessage('実績工数が未入力のまま完了にしました。実績工数を入力して、もう一度更新してください。', 'alert-warning');
        return;
    }
    if (planned && actual > planned * OVER_RATE) {
        context.AddMessage(
            `実績工数(${actual}時間)が予定工数(${planned}時間)を2割以上超えています。原因を内容欄に残してください。`,
            'alert-information'
        );
    }
}

noticeOnComplete();

注記

  • メッセージを出しても、保存は止まりません。標準の「更新しました」の下に並んで表示されます。
  • 「作成前」でもcontext.AddMessageは呼べますが、作成のあとは編集画面へ切り替わるため、メッセージは消えます。このサンプルの条件は「更新前」のみにしています。
  • 実績工数が 0 のときも、未入力として扱います。

関連情報