開発者向け機能:サーバスクリプト:条件
## 概要
[サーバスクリプト](/ja/manual/table-management-server-script)はサーバサイドで実行する条件を制御する事が可能です。各条件について説明します。
## 制限事項
1. [一括削除](/ja/manual/table-record-bulkdelete)時は「削除前」、「削除後」のどちらの条件でも実行しません。「一括削除前」、「一括削除後」をご使用ください。
2. 単一レコードの[削除](/ja/manual/table-record-delete)時は「一括削除前」、「一括削除後」のどちらの条件も実行しません。「削除前」、「削除後」をご使用ください。
## 設定内容
|No|条件|説明|
|:----|:----|:----|
|1|サイト設定の読み込み時|[既定のビュー](/ja/manual/table-management-default-view)を変更する際に使用します。|
|2|ビュー処理時|「JSONデータレイアウト:View」を使用し[フィルタ](/ja/manual/table-record-search)や[並び替え](/ja/manual/table-record-sort)を設定する際に使用します。|
|3|「レコード」読み込み時|「レコード」読み込み後に項目の内容を変更する際に使用します。|
|4|計算式の前|計算式の実行前に項目の内容を変更する際に使用します。|
|5|計算式の後|計算式の実行後に項目の内容を変更する際に使用します。|
|6|作成前|「レコード」が作成される前に実行します。|
|7|作成後|「レコード」が作成された後に実行します。|
|8|更新前|「レコード」が更新される前に実行します。|
|9|更新後|「レコード」が更新された後に実行します。|
|10|削除前|「レコード」が削除される前に実行します。[一括削除](/ja/manual/table-record-bulkdelete)では実行しません。|
|11|削除後|「レコード」が削除された後に実行します。[一括削除](/ja/manual/table-record-bulkdelete)では実行しません。|
|12|一括削除前|「レコード」が一括削除される前に実行します。単一レコードの[削除](/ja/manual/table-record-delete)では実行しません。|
|13|一括削除後|「レコード」が一括削除された後に実行します。単一レコードの[削除](/ja/manual/table-record-delete)では実行しません。|
|14|行表示の前|[一覧画面](/ja/manual/table-grid)で行やセルの[スタイル](/ja/manual/table-management-style)や表示内容を設定する際に使用します。編集画面のリンクテーブルを表示する際にも実行します。|
|15|画面表示の前|画面の表示内容を変更する際に使用します。プロセスボタンによる一括操作後の場合にも実行します。|
|16|共有|[コードの共有](/ja/manual/server-script-shared)として使用します。|
## [拡張サーバスクリプト](/ja/manual/extended-server-script)の条件
[拡張サーバスクリプト](/ja/manual/extended-server-script)では「共有」を除く条件について、[サーバスクリプト](/ja/manual/table-management-server-script)と同様に指定できます。
[拡張サーバスクリプト](/ja/manual/extended-server-script)で条件を指定する方法は[拡張サーバスクリプト](/ja/manual/extended-server-script)のマニュアルを参照してください。
## Pleasanter Code Assistの拡張サーバスクリプトの条件
Pleasanter Code Assistの拡張サーバスクリプトでは「共有」を除く条件について、[サーバスクリプト](/ja/manual/table-management-server-script)と同様に指定できます。
Pleasanter Code Assistの拡張サーバスクリプトで条件を指定する方法は[Pleasanter Code Assistの拡張機能](/ja/manual/pleasanter-code-assist-how-to-use-extensions)のマニュアルを参照してください。
## 「一括削除前」、「一括削除後」の補足事項
### 使用例 一括削除したレコードIDを取得する方法
**・「一括削除前」のサーバスクリプト例**
``` javascript
let ids = [];
if (context.ApiRequestBody) {
const apiJson = JSON.parse(context.ApiRequestBody);
// APIやitems.BulkDeleteを使用しSelectedでIDを指定して一括削除する場合
if (apiJson.Selected) {
ids = apiJson.Selected.map(Number);
}
else {
let data = {};
// APIやitems.BulkDeleteを使用しAllで全レコードを一括削除する場合
if (apiJson.All) {
const all = apiJson.All;
data = { All: all };
}
// APIやitems.BulkDeleteを使用しViewで条件を指定して一括削除する場合
else if (apiJson.View) {
const view = apiJson.View;
data = { View: view };
}
const apiModels = items.Get(context.Id, JSON.stringify(data));
for (let apiModel of apiModels) {
// 記録テーブルの場合はapiModel.ResultId を追加
// 期限付きテーブルの場合はapiModel.IssueId を追加
ids.push(apiModel.ResultId);
}
}
}
// 画面から一括削除する場合
else {
for (let id of grid.SelectedIds()) {
ids.push(id);
}
}
if (ids && ids.length > 0) {
// 一括削除後のサーバスクリプトにID一覧を連携
context.UserData.BulkDeleteIds = ids.join(',');
}
```
**・「一括削除後」のサーバスクリプト例**
```
if (context.UserData.BulkDeleteIds && context.UserData.BulkDeleteIds != '') {
// 一括削除前のサーバスクリプトから連携されたIDを取得
const idsStr = context.UserData.BulkDeleteIds;
const ids = idsStr.split(',').map(Number);
for (let id of ids) {
// ブラウザの開発者ツールのコンソールログに、一括削除したレコードのIDを出力
context.Log(id);
}
}
```
### [削除時に子レコードを同時に削除する](/ja/manual/table-management-delete-with-links)設定との関係
テーブルの分類項目の[選択肢一覧](/ja/manual/table-management-choices-text)に[削除時に子レコードを同時に削除する](/ja/manual/table-management-delete-with-links)設定を行っている場合、親レコードの削除と連動して子レコードが削除される際は、子レコードが登録されているテーブルに対して[一括削除](/ja/manual/table-record-bulkdelete)の処理が実行されます。したがって、子レコードが登録されているテーブルに、条件に「一括削除前」、「一括削除後」を指定したサーバスクリプトが登録されている場合、該当のサーバスクリプトが実行されます。
## 対応バージョン
|対応バージョン|内容|
|:--|:--|
|1.4.16.0 以降|サーバスクリプトの条件に「一括削除前」、「一括削除後」を追加。|
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/table-grid">テーブル機能:レコードの一覧画面</a><span>2025/01/16 up</span></li>
<li><a href="/ja/manual/table-record-search">テーブル機能:レコードの検索(フィルタ)</a><span>2024/09/12 up</span></li>
<li><a href="/ja/manual/table-record-sort">テーブル機能:レコードの並び替え(ソート)</a><span>2024/08/01 up</span></li>
<li><a href="/ja/manual/table-record-delete">テーブル機能:レコードの削除</a><span>2024/06/07 up</span></li>
<li><a href="/ja/manual/table-record-bulkdelete">テーブル機能:レコードの一括削除</a><span>2023/10/26 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-choices-text">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧</a><span>2023/10/12 up</span></li>
<li><a href="/ja/manual/table-management-choices-text-depts">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:組織</a><span>2023/04/25 up</span></li>
<li><a href="/ja/manual/table-management-choices-text-groups">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:グループ</a><span>2023/04/25 up</span></li>
<li><a href="/ja/manual/table-management-choices-text-users">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:ユーザ</a><span>2023/04/25 up</span></li>
<li><a href="/ja/manual/table-management-choice-json">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:フィルタ、ソート、表示フォーマット</a><span>2024/11/12 up</span></li>
<li><a href="/ja/manual/table-management-delete-with-links">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:削除時に子レコードを同時に削除する</a><span>2025/05/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-default-view">テーブルの管理:一覧画面:既定のビュー</a><span>2025/01/30 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-filter">テーブルの管理:フィルタ</a><span>2023/05/12 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-style">テーブルの管理:スタイル</a><span>2025/03/11 up</span></li>
<li><a href="/ja/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2025/05/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2023/06/01 up</span></li>
<li><a href="/ja/manual/server-script-shared">開発者向け機能:サーバスクリプト:コードの共有</a><span>2025/01/30 up</span></li></ul></article>
<ul><li><a href="/ja/manual/style">開発者向け機能:スタイル</a><span>2025/01/10 up</span></li></ul></article>
<ul><li><a href="/ja/manual/extended-server-script">開発者向け機能:拡張機能:拡張サーバスクリプト</a><span>2025/05/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/advanced-operations-link">応用編:リンク</a><span>2024/07/08 up</span></li></ul></article>
<ul><li><a href="/ja/manual/faq-server-script-log">FAQ:サーバスクリプトのエラーログを出力したい</a><span>2024/04/29 up</span></li></ul></article>
<ul><li><a href="/ja/manual/pleasanter-code-assist-how-to-use-extensions">Pleasanter Code Assist:使い方:拡張機能</a><span>2025/05/13 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />