コンテンツにスキップ
「プリザンター入門」発売中!

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

概要

サーバスクリプトはサーバサイドで実行する条件を制御する事が可能です。各条件について説明します。

サーバスクリプトの条件の設定欄

制限事項

  1. 一括削除時は「削除前」、「削除後」のどちらの条件でも実行しません。「一括削除前」、「一括削除後」をご使用ください。
  2. 単一レコードの削除時は「一括削除前」、「一括削除後」のどちらの条件も実行しません。「削除前」、「削除後」をご使用ください。

設定内容

No 条件 説明
1 サイト設定の読み込み時 既定のビューを変更する際に使用します。
2 ビュー処理時 JSONデータレイアウト:Viewを使用しフィルタ並び替えを設定する際に使用します。
3 「レコード」読み込み時 「レコード」読み込み後に項目の内容を変更する際に使用します。
4 計算式の前 計算式の実行前に項目の内容を変更する際に使用します。ポストバックで実行する際に使用します。
5 計算式の後 計算式の実行後に項目の内容を変更する際に使用します。ポストバックで実行する際に使用します。
6 作成前 「レコード」が作成される前に実行します。
7 作成後 「レコード」が作成された後に実行します。
8 更新前 「レコード」が更新される前に実行します。
9 更新後 「レコード」が更新された後に実行します。
10 削除前 「レコード」が削除される前に実行します。一括削除では実行しません。
11 削除後 「レコード」が削除された後に実行します。一括削除では実行しません。
12 一括削除前 「レコード」が一括削除される前に実行します。単一レコードの削除では実行しません。
13 一括削除後 「レコード」が一括削除された後に実行します。単一レコードの削除では実行しません。
14 画面表示の前 画面の表示内容を変更する際に使用します。プロセスボタンによる一括操作後の場合にも実行します。ポストバックで実行する際に使用します。
15 行表示の前 一覧画面で行やセルのスタイルや表示内容を設定する際に使用します。編集画面のリンクテーブルを表示する際にも実行します。
16 共有 コードの共有として使用します。

拡張サーバスクリプトの条件

拡張サーバスクリプトでは「共有」を除く条件について、サーバスクリプトと同様に指定できます。

拡張サーバスクリプトで条件を指定する方法は拡張サーバスクリプトのマニュアルを参照してください。

Pleasanter Code Assistの拡張サーバスクリプトの条件

Pleasanter Code Assistの拡張サーバスクリプトでは「共有」を除く条件について、サーバスクリプトと同様に指定できます。

Pleasanter Code Assistの拡張サーバスクリプトで条件を指定する方法はPleasanter Code Assistの拡張機能のマニュアルを参照してください。

「一括削除前」、「一括削除後」の補足事項

使用例 一括削除したレコードIDを取得する方法

・「一括削除前」のサーバスクリプト例

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);
  }  
}

削除時に子レコードを同時に削除する設定との関係

テーブルの分類項目の選択肢一覧削除時に子レコードを同時に削除する設定を行っている場合、親レコードの削除と連動して子レコードが削除される際は、子レコードが登録されているテーブルに対して一括削除の処理が実行されます。したがって、子レコードが登録されているテーブルに、条件に「一括削除前」、「一括削除後」を指定したサーバスクリプトが登録されている場合、該当のサーバスクリプトが実行されます。

対応バージョン

対応バージョン 内容
1.4.16.0 以降 サーバスクリプトの条件に「一括削除前」、「一括削除後」を追加。

関連情報