開発者向け機能:サーバスクリプト:model
概要¶
サーバスクリプトで使用可能な現在の「レコード」の情報をもつオブジェクトです。プロパティを使用し項目の値の読み取りが行えます。プロパティに値を代入すると一覧画面やエディタの項目の表示を変更できますが「レコード」の更新を行うことはできません。他のテーブルの「レコード」の取得や「レコード」の更新を行う場合はitemsオブジェクトを使用してください。
制限事項¶
- 「サイト設定読み込み時」、「ビュー処理時」の条件では使用できません。
- 一覧画面では「行表示の前」の条件を指定した場合のみ使用できます。
- 項目のアクセス制御で「読み取り権限」の無い項目は取得できません。
- 項目のアクセス制御で「更新権限」の無い項目は値を代入しても画面の表示を変更できません。
- 画面上に存在しない項目は取得できません。画面上にない項目を取得するには「AlwaysGetColumnsオブジェクト」を使用してください。
- 添付ファイル項目はファイルそのものを取得できません。添付ファイルに関するメタデータ(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¶
使用例②¶
下記の例では状況項目を取得します。表示名ではなく値を取得します。
JavaScript¶
使用例③¶
下記の例ではタイトル項目に'新しいレコードタイトル'を設定します。
JavaScript¶
使用例④¶
下記の例では状況項目に300(レビュー)を設定します。表示名ではなく値を代入します。
JavaScript¶
使用例⑤¶
下記の例では分類項目に「東京都」を設定します。
JavaScript¶
使用例⑥¶
下記の例では複数選択をオンにした分類項目の値を取得します。取得した値は以下のように配列に置き換えて処理する必要があります。※下記は選択肢一覧に[[Groups*]]を設定
JavaScript¶
let groupIdList = JSON.parse(model.ClassA);
for (let groupId of groupIdList) {
context.Log(groupId);
}
使用例⑦¶
下記の例では複数選択をオンにした分類項目に「設計」と「構築」を代入します。複数選択をオンにした分類項目ではJSON形式の文字列で代入する必要があります。
JavaScript¶
使用例⑧¶
下記の例では一覧画面で管理者項目または担当者項目がログインユーザのレコードに黄色の背景色のCSSをセットします。条件は「行表示の前」を使用します。サーバスクリプトとスタイルを組み合わせて使用します。
JavaScript¶
if (model.Manager === context.UserId || model.Owner === context.UserId) {
model.ExtendedRowCss = 'own';
}
CSS¶
使用例⑨¶
下記の例では一覧画面のレコードにデータ属性「data-extension」を追加します。※属性名は「extension」固定です。複数のデータ属性を付与したい場合はJSONオブジェクトに格納してセットしてください。
JavaScript¶
生成されるHTMLです。
HTML¶
スクリプトで参照してみます。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.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": "ここにはコメントの本文が入ります"
}
]
詳細情報¶
- 一覧画面では条件に「行表示の前」を指定した場合のみ使用できます。行毎にサーバスクリプトが実行され各行のレコードが「modelオブジェクト」に格納されます。
- エディタでは現在、画面に表示されている「レコード」の情報が「modelオブジェクト」に格納されます。
対応バージョン¶
| 対応バージョン | 内容 |
|---|---|
| 1.3.27.0 以降 | Commentsを追加 Attachmentsを追加 |
関連情報¶
- 開発者向け機能:サーバスクリプト
- テーブルの管理:項目
- テーブル機能:レコードの一覧画面
- テーブル機能:レコードのエディタ画面
- 開発者向け機能:サーバスクリプト:items
- 項目のアクセス制御
- テーブルの管理:項目:添付ファイル
- テーブルの管理:項目:ID
- テーブルの管理:項目:作成者
- テーブルの管理:項目:作成日時
- テーブルの管理:項目:更新者
- テーブルの管理:項目:更新日時
- テーブルの管理:項目:バージョン
- テーブルの管理:項目:タイトル
- テーブルの管理:項目:内容
- テーブルの管理:項目:開始
- テーブルの管理:項目:完了
- テーブルの管理:項目:作業量
- テーブルの管理:項目:進捗率
- テーブルの管理:項目:残作業量
- テーブルの管理:項目:状況
- テーブルの管理:項目:管理者
- テーブルの管理:項目:担当者
- テーブルの管理:項目:ロック
- テーブルの管理:項目:コメント
- テーブルの管理:項目:分類
- テーブルの管理:項目:数値
- テーブルの管理:項目:日付
- テーブルの管理:項目:説明
- テーブルの管理:項目:チェック
- テーブルの管理:エディタ:項目の詳細設定:複数選択
- 開発者向け機能:スタイル
