開発者向け機能:JSONデータレイアウト:View
## 概要
[API](/ja/manual/api)や[サーバスクリプト](/ja/manual/table-management-server-script)でレコードを操作する際に[フィルタ](/ja/manual/table-record-search)や[ソート](/ja/manual/table-record-sort)に指定するJSON形式のデータレイアウトです。
## 制限事項
1. SQL Serverを使用する場合とPostgreSQLを使用する場合では検索結果が異なる場合がございます。SQL ServerではLIKE句またはフルテキスト検索が使用されるのに対し、PostgreSQLではILIKE句またはpg_trgmによるフルテキスト検索が行われます。
## データレイアウト
|項目名/種類|プロパティ名|データ型|備考|
|:--|--|--|:--|
|未完了|Incomplete|真偽値||
|自分|Own|真偽値||
|期限が近い|NearCompletionTime|真偽値||
|遅延|Delay|真偽値||
|期限超過|Overdue|真偽値||
|検索|Search|文字列||
|列フィルタ|ColumnFilterHash|オブジェクト(文字列)| 値の指定方法は下記「ColumnFilterHashの指定方法」を参照。|
|列フィルタ検索タイプ|ColumnFilterSearchTypes|列挙型| 値の指定方法は下記「ColumnFilterSearchTypesの指定方法」を参照。|
|否定|ColumnFilterNegatives|配列(文字列)| 値の指定方法は下記「ColumnFilterNegativesの指定方法」を参照。**本プロパティを使用する場合は[否定フィルタを使用する](/ja/manual/table-management-filter-use-negative-filter)を有効化する必要があります。**|
|ソート|ColumnSorterHash|オブジェクト(文字列)| 値の指定方法は下記「ColumnSorterHashの指定方法」を参照。|
|-|ApiDataType|列挙型|値の指定方法は下記「ApiDataTypeの指定方法」を参照。|
|-|ApiColumnKeyDisplayType|列挙型|値の指定方法は下記「ApiColumnKeyDisplayTypeの指定方法」を参照。<b>本プロパティは、ApiDataTypeが"KeyValues"の場合のみ有効になります。</b>|
|-|ApiColumnValueDisplayType|列挙型|値の指定方法は下記「ApiColumnValueDisplayTypeの指定方法」を参照。<b>本プロパティは、ApiDataTypeが"KeyValues"の場合のみ有効になります。</b>|
|-|ApiColumnHash|オブジェクト(文字列)| 値の指定方法は下記「ApiColumnHashの指定方法」を参照。<b>本プロパティは、ApiDataTypeが"KeyValues"の場合のみ有効になります。</b>|
|-|GridColumns|配列(文字列)|値の指定方法は下記「GridColumnsの指定方法」を参照。<b>本プロパティは、ApiDataTypeが"KeyValues"の場合のみ有効になります。</b>|
|-|MergeSessionViewFilters|真偽値|値が真の場合、APIで指定したフィルタ条件とセッションに存在するフィルタ条件をマージします。同じフィルタ条件が存在する場合APIで指定したフィルタ条件を優先します。<br />値が偽の場合、セッションに存在するフィルタ条件はマージしません。<br />本プロパティの省略時の初期設定値は偽です。|
|-|MergeSessionViewSorters|真偽値|値が真の場合、APIで指定したソート条件とセッションに存在するソート条件をマージします。同じソート条件が存在する場合APIで指定したソート条件を優先します。<br />値が偽の場合、セッションに存在するソート条件はマージしません。<br />本プロパティの省略時の初期設定値は偽です。|
### ColumnFilterHashの指定方法
ColumnFilterHashの値は、選択肢有りの分類、数値、日付は、配列で複数指定可能です。複数の値を指定した場合はOR検索となります。
日付および数値の場合、カンマ区切りの文字列で範囲の指定が可能です。
複数の検索条件を指定した場合は、AND検索となります。
__分類Aが "みかん" or "ブドウ"__
##### JSON
```
"ClassA":"[\"みかん\",\"ブドウ\"]"
```
__数値Aが 10 or 20 or 30__
##### JSON
```
"NumA":[10,20,30]
```
__数値Aが5〜10 or 15__
##### JSON
```
"NumA":"[\"5,10\",15]"
```
__数値Aが100以下__
##### JSON
```
"NumA":"[\",100\"]"
```
__日付Aが2021/1/31(終日)__
##### JSON
```
"DateA":"[\"2021/01/31 00:00:00,2021/01/31 23:59:59\"]"
```
__日付Aが2021/1/1以降__
##### JSON
```
"DateA":"[\"2021/01/01 00:00:00,\"]"
```
__分類Aが"りんご" or "バナナ" 、AND 数値Aが10 or 20 or 30__
##### JSON
```
"ColumnFilterHash":{
"ClassA":"[\"りんご\",\"バナナ\"]",
"NumA":[10,20,30]
}
```
__数値Aが300〜900 or 200、AND 日付Aが2021/1/1〜2021/1/31、AND 数値Bが100以下、AND 日付Bが2021/3/1以降__
##### JSON
```
"ColumnFilterHash":{
"NumA":["300,990",200],
"DateA":"[\"2021/01/01 00:00:00,2021/01/31 23:59:59\"]",
"NumB":[",100"],
"DateB":"[\"2021/03/01 00:00:00,\"]"
}
```
__未設定を設定する場合__
ドロップダウンリストの(未設定)のレコードをフィルタリングする場合はタブ文字を指定してください。
##### JSON
```
"ColumnFilterHash":{
"ClassA":"[\"\t\"]"
}
```
__未入力を絞り込む場合__
分類や説明項目で未入力のレコードをフィルタリングする場合は半角スペースを指定してください。
##### JSON
```
"ColumnFilterHash":{
"ClassA":" "
}
```
__日付項目で未入力を絞り込む場合__
日付項目で未入力のレコードをフィルタリングする場合はタブ文字を指定してください。
##### JSON
```
"ColumnFilterHash":{
"DateA":"[\"\t\"]"
}
```
__ログインユーザ自身でレコードを絞り込む場合__
[選択肢一覧](/ja/manual/table-management-choices-text)にUsersまたはDeptsを指定している項目で、ログインユーザまたは所属している組織で絞り込む場合は、Ownを指定してください。
##### JSON
```
"ColumnFilterHash": {
"ClassA": "[\"Own\"]"
}
```
__OR条件,AND条件を設定する場合__
ColumnFilterHashに or_ または and_ で始まる任意名のプロパティを追加し、検索条件のJSONを文字列化した値を設定することで、OR条件またはAND条件による[フィルタ](/ja/manual/table-record-search)を行うことができます。
下記のJavaScript例は、分類A が "設計" 且つ 分類D が "3" のレコード、または、分類B が "テスト" 且つ 分類D が "7" のレコードを抽出するJSONデータを生成するコード例です。
##### JavaScript
```
let data1 = {};
data1.ClassA = '["設計"]';
data1.ClassD = '["3"]';
let data2 = {};
data2.ClassA = '["テスト"]';
data2.ClassD = '["7"]';
let data = {};
data.and_Filter1 = JSON.stringify(data1); // and_で始まる名前なのでAND条件になる。条件のJSONを文字列化して代入する必要がある。
data.and_Filter2 = JSON.stringify(data2); // 上行と同等。
let filter = JSON.stringify(data);
let send_json = { //APIで送信するJSONデータの生成
ApiVersion: 1.1,
ApiKey: 'efe7...',
View: {
ApiDataType: 'KeyValues',
GridColumns: ['Title','ClassA','ClassD'],
ColumnFilterHash: {
'or_Filter': filter // or_で始まる名前なのでOR条件になる
},
ColumnFilterSearchTypes:{
ClassA: 'ExactMatch',
ClassD: 'ExactMatch'
},
}
};
```
### ColumnFilterSearchTypesの指定方法
- 検索方法を指定します。タイトル、内容、説明、分類項目、の各項目の検索に利用できます。ColumnFilterHashと共に用います。
#### 検索文字列を1つ指定
ColumnFilterHashに文字列を1つ指定し、ColumnFilterSearchTypesに検索方法を指定します。
"PartialMatch"(部分一致)、"ExactMatch"(完全一致)、"ForwardMatch"(前方一致)のいずれかの検索方法を指定できます。
- 次の例では、タイトル項目の値が"中野"で始まるレコードにマッチします。
##### JSON
```
ColumnFilterHash: {
Title: "中野"
},
ColumnFilterSearchTypes:{
Title: "ForwardMatch"
}
```
#### 複数の検索文字列を指定
ColumnFilterHashに文字列を配列で指定し、ColumnFilterSearchTypesに検索方法を指定します。
"PartialMatchMultiple"(部分一致)、"ExactMatchMultiple"(完全一致)、"ForwardMatchMultiple"(前方一致)のいずれかの検索方法を指定できます。ColumnFilterHashに指定した複数の文字列のいずれかとマッチするor条件となります。
- 次の例では、タイトル項目の値が"中野"または"新宿"で始まるレコードにマッチします。
##### JSON
```
ColumnFilterHash: {
Title: "[\"中野\",\"新宿\"]"
},
ColumnFilterSearchTypes:{
Title: "ForwardMatchMultiple"
},
```
### ColumnFilterNegativesの指定方法
否定条件にする項目を指定します。こちらのパラメータはColumnFileterHashと併用します。
- 次の例では、状況項目が未設定(100)以外でレコードの絞り込みを行います。
##### JSON
```
ColumnFilterHash: {
Status: "[\"100\"]"
},
ColumnFilterNegatives: [
"Status"
]
```
### ColumnSorterHashの指定方法
- ソート順は asc(昇順)/desc(降順) のどちらかを指定します。
- JSONでは{"項目名":"ソート順"}のペア{"DateA":"asc", "ClassA":"desc"}で指定します。
##### JSON
```
"ColumnSorterHash":{
"DataA":"asc",
"Title":"asc"
}
```
### ApiDataTypeの指定方法
- このプロパティではAPIの形式を切り替えることが可能です。以下のどちらかを指定します。
- "KeyValues"を指定した場合、返却されるレスポンスの各項目の形式が表示名となります。"GridColumns"を指定しない場合は[テーブルの管理](/ja/manual/table-management)の[一覧](/ja/manual/table-management-grid)タブで有効化された項目が取得されます。
- また、"ApiDataType"の指定がない場合(既定値)、レスポンスの各項目の形式は、Keyはカラム名、Valueは値(データベース上に登録されている値)となります。
##### JSON
```
ApiDataType: "KeyValues"
```
### ApiColumnKeyDisplayTypeの指定方法
- このプロパティでは返却されるレスポンスの各項目のKeyの表示形式を指定することが可能です。以下のどちらかを指定します。
- <b>"LabelText"</b>の場合、Keyは表示名となります。
- <b>"ColumnName"</b>の場合、Keyはカラム名となります。
- なお、既定値は<b>"LabelText"</b>です。
##### JSON
```
ApiColumnKeyDisplayType: "ColumnName"
```
### ApiColumnValueDisplayTypeの指定方法
- このプロパティでは返却されるレスポンスの各項目のValueの表示形式を指定することが可能です。以下のいずれかを指定します。
- <b>"DisplayValue"</b>の場合、Valueは表示名となります。
- <b>"Value"</b>の場合、Valueは値(データベース上に登録されている値)となります。
- <b>"Text"</b>の場合、Valueは設定した書式や単位等も含めた値となります。
- なお、既定値は<b>"DisplayValue"</b>です。
##### JSON
```
ApiColumnValueDisplayType: "DisplayValue"
```
### ApiColumnHashの指定方法
- このプロパティでは項目単位でKey、Valueの表示形式を指定することができます。各項目ごとのKeyは<b>"KeyDisplayType"</b>、Valueは<b>"ValueDisplayType"</b>で指定することができます。
- "KeyDisplayType"では、<b>"LabelText"</b>、<b>"ColumnName"</b>のどちらかを指定します。既定値は<b>"LabelText"</b>です。
- "ValueDisplayType"では、<b>"DisplayValue"</b>、<b>"Value"</b>、<b>"Text"</b>のいずれかを指定します。 既定値は<b>"DisplayValue"</b>です。
##### JSON
(例)更新者(Updator)の値の表示形式を表示名にしたいとき
```
ApiColumnHash: {
Updator: {
ValueDisplayType: "DisplayValue"
}
}
```
### GridColumnsの指定方法
- 返却される項目を制御したいときに配列形式で指定します。"GridColumns"を指定しない場合は[テーブルの管理](/ja/manual/table-management)の[一覧](/ja/manual/table-management-grid)タブで有効化された項目が取得されます。
##### JSON
```
GridColumns: ["ClassA","ClassB"]
```
- また、親テーブル側の項目を指定することも可能です。
(例)親テーブル(サイトID:11)の分類Bの値を取得したい場合
※下記の例は、子テーブルの分類Aがリンク設定されている場合となります。
##### JSON
```
GridColumns: ["ClassA","ClassA~11,ClassB"]
```
## 関連情報
<div id="ManualList"><ul><li><a href="/en/manual/table-record-search">Table Function: Search for Record (Filter)</a><span>10.16.2024 up</span></li>
<li><a href="/en/manual/table-record-sort">Table Function: Sort Records (Sort)</a><span>10.07.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/table-management">Manage Table</a><span>10.02.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/table-management-choices-text">Table Management: Editor: Item Detail Settings: Option List</a><span>08.13.2024 up</span></li>
<li><a href="/en/manual/table-management-choices-text-depts">Table Management: Editor: Item Detail Settings: Option List: Departments</a><span>08.13.2024 up</span></li>
<li><a href="/en/manual/table-management-choices-text-groups">Table Management: Editor: Item Detail Settings: Option List: Group</a><span>08.13.2024 up</span></li>
<li><a href="/en/manual/table-management-choices-text-users">Table Management: Editor: Item Detail Settings: Option List: User</a><span>08.13.2024 up</span></li>
<li><a href="/en/manual/table-management-choice-json">Manage Table: Editor: Column Advanced Settings: Option List: Filter, Sort, Display Format</a><span>10.02.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/table-management-grid">Table Management: List Screen</a><span>08.13.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/table-management-filter">Manage Table: Filter</a><span>10.02.2024 up</span></li>
<li><a href="/en/manual/table-management-filter-use-negative-filter">Manage Table: Filter: Use Negative Filters</a><span>10.03.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/table-management-server-script">Table Management: Server Script</a><span>08.13.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/api">Developer Function: API</a><span>08.14.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/server-script">Developer Function: Server Script</a><span>08.14.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/extended-sql-api">Developer Function: Extensions: Extended SQL: Executing Extended SQL from the API</a><span>08.14.2024 up</span></li></ul></article>
<ul><li><a href="/en/manual/advanced-operations-link">応用編:リンク</a><span>08.14.2023 up</span></li></ul></article>
<ul><li><a href="/en/manual/faq-api-paging">FAQ: I want to retrieve data exceeding 200 records via API</a><span>08.14.2024 up</span></li>
<li><a href="/en/manual/faq-api">FAQ: An error occurs when executing the API</a><span>08.14.2024 up</span></li>
<li><a href="/en/manual/faq-server-script-log">FAQ: I want to output the error log of a server script</a><span>08.14.2024 up</span></li>
<li><a href="/en/manual/faq-json-format">FAQ: What to check if modified configuration files or API requests (JSON format) are not recognized correctly</a><span>08.14.2024 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />