コンテンツにスキップ

開発者向け機能:サーバスクリプト:model

概要

サーバスクリプトで使用可能な現在の「レコード」の情報をもつオブジェクトです。プロパティを使用し項目の値の読み取りが行えます。プロパティに値を代入すると一覧画面エディタの項目の表示を変更できますが「レコード」の更新を行うことはできません。他のテーブルの「レコード」の取得や「レコード」の更新を行う場合はitemsオブジェクトを使用してください。

制限事項

  1. 「サイト設定読み込み時」、「ビュー処理時」の条件では使用できません。
  2. 一覧画面では「行表示の前」の条件を指定した場合のみ使用できます。
  3. 項目のアクセス制御で「読み取り権限」の無い項目は取得できません。
  4. 項目のアクセス制御で「更新権限」の無い項目は値を代入しても画面の表示を変更できません。
  5. 画面上に存在しない項目は取得できません。画面上にない項目を取得するには「AlwaysGetColumnsオブジェクト」を使用してください。
  6. 添付ファイル項目はファイルそのものを取得できません。添付ファイルに関するメタデータ(JSON)のみ取得可能です。

プロパティ

No プロパティ名 get set type 説明
1 IssueId / ResultId long ID項目
2 SiteId long 「サイトID項目」
3 Creator int 作成者項目
4 CreatedTime DateTime 作成日時項目
5 Updator int 更新者項目
6 UpdatedTime DateTime 更新日時項目
7 Ver int バージョン項目
8 Title string タイトル項目
9 Body string 内容項目
10 StartTime DateTime 開始項目
11 CompletionTime DateTime 完了項目
12 WorkValue decimal 作業量項目
13 ProgressRate decimal 進捗率項目
14 RemainingWorkValue decimal 残作業量項目
15 Status int 状況項目
16 Manager int 管理者項目
17 Owner int 担当者項目
18 Locked bool ロック項目
19 Comments string コメント項目
20 ClassA~ string 分類項目
21 NumA~ decimal 数値項目
22 DateA~ DateTime 日付項目
23 DescriptionA~ string 説明項目
24 CheckA~ bool チェック項目
25 AttachmentsA~ string 添付ファイル項目
26 ExtendedRowCss string 「行CSS」
27 ExtendedRowData string 「行データ属性」
28 UpdateOnExit bool サーバスクリプト終了後にレコードを更新
29 ReadOnly bool レコードを読取専用

メソッド

メソッドはありません。

使用例①

下記の例では更新日時項目を取得します。時刻はUTCで取得されますので、必要に応じてJST等に変換してください。

JavaScript
let updatedTime = model.UpdatedTime;

使用例②

下記の例では状況項目を取得します。表示名ではなく値を取得します。

JavaScript
let status = model.Status;

使用例③

下記の例ではタイトル項目に'新しいレコードタイトル'を設定します。

JavaScript
model.Title = '新しいレコードタイトル';

使用例④

下記の例では状況項目に300(レビュー)を設定します。表示名ではなく値を代入します。

JavaScript
model.Status = 300;

使用例⑤

下記の例では分類項目に「東京都」を設定します。

JavaScript
model.ClassB = '東京都';

使用例⑥

下記の例では複数選択をオンにした分類項目の値を取得します。取得した値は以下のように配列に置き換えて処理する必要があります。※下記は選択肢一覧に[[Groups*]]を設定

JavaScript
let groupIdList = JSON.parse(model.ClassA);
for (let groupId of groupIdList) {
    context.Log(groupId);
}

使用例⑦

下記の例では複数選択をオンにした分類項目に「設計」と「構築」を代入します。複数選択をオンにした分類項目ではJSON形式の文字列で代入する必要があります。

JavaScript
let data = [];
data.push('設計');
data.push('構築');
model.ClassA = JSON.stringify(data);

使用例⑧

下記の例では一覧画面管理者項目または担当者項目がログインユーザのレコードに黄色の背景色のCSSをセットします。条件は「行表示の前」を使用します。サーバスクリプトスタイルを組み合わせて使用します。

JavaScript
if (model.Manager === context.UserId || model.Owner === context.UserId) {
    model.ExtendedRowCss = 'own';
}
CSS
/* ver1.4.19.2までは .own {~} と要素を指定してください */
.grid .own td{
    background-color: yellow;
}

使用例⑨

下記の例では一覧画面のレコードにデータ属性「data-extension」を追加します。※属性名は「extension」固定です。複数のデータ属性を付与したい場合はJSONオブジェクトに格納してセットしてください。

JavaScript

model.ExtendedRowData = JSON.stringify({ timeout: limit });

生成されるHTMLです。

HTML

<tr class="grid-row" data-extension="'{"timeout":300}'"> ...

スクリプトで参照してみます。jQueryのdata()でアクセスします。

JavaScript
const handler = function () {
    $('table tr').each(function (i, e) {
        var ext = $(e).data('extension');   // var extはJSON object
        if (Date.now() > ext.timeout) {
            ...
        }
    });
};

使用例⑩

下記の例では日付項目に当日の日付をセットし、サーバスクリプト終了後にレコードの更新を行います。

JavaScript
model.DateA = utilities.Today();
model.UpdateOnExit = true;

出力例

model.AttachmentsAの出力例(以下は出力された文字列を整形したものです)

[
    {
        "Guid": "18F34BCD594F4FF6A94D7C0F9C8AB5D4",
        "Name": "test.txt",
        "Size": 4,
        "HashCode": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg="
    }
]

model.Commentsの出力例(以下は出力された文字列を整形したものです)
[
    {
        "CommentId": 1,
        "CreatedTime": "2022-12-22T14:42:56.7963585+09:00",
        "Creator": 1,
        "Body": "ここにはコメントの本文が入ります"
    }
]

詳細情報

  1. 一覧画面では条件に「行表示の前」を指定した場合のみ使用できます。行毎にサーバスクリプトが実行され各行のレコードが「modelオブジェクト」に格納されます。
  2. エディタでは現在、画面に表示されている「レコード」の情報が「modelオブジェクト」に格納されます。

対応バージョン

対応バージョン 内容
1.3.27.0 以降 Commentsを追加
Attachmentsを追加

関連情報