コンテンツにスキップ

$p.apiBulkDelete

概要

AjaxのPOSTリクエストにより、レコードを一括削除します。

構文

JavaScript
$p.apiBulkDelete({
    id: <サイトID>,
    data: {
        <データ>
    },
    async: <非同期処理の有無>,
    done: <API通信成功時の処理>,
    fail: <API通信失敗時の処理>,
    always: <API通信完了時の処理>
});

パラメータ

パラメータ名 型 必須 概要
サイトID long ○ 削除対象レコードが登録されているテーブルのサイトID。
データ object ○ 一括削除するレコードの条件等をJSON形式で指定。JSONの仕様は レコード一括削除API の「設定値」を参照。また、本スクリプトの独自仕様としてGridCheckも指定が可能。
非同期処理の有無 bool falseを指定すると同期処理として実行。省略時はtrue(非同期処理)となる。
API通信成功時の処理 function ○ API通信成功時に実行する処理。
API通信失敗時の処理 function API通信失敗時に実行する処理。
API通信完了時の処理 function API通信完了時に実行する処理。

<データ>にGridCheckを指定した場合

一覧画面でチェックしたレコードを削除します。詳細は使用例4および使用例5を参照。

使用例

1. 項目の条件で絞ってレコードを削除する場合

JavaScript
$p.apiBulkDelete({
    id: 123,
    data: {
        View: {
            ColumnFilterHash: {
                Status: "[100,910]"
            }
        }
    },
    done: function (data) {
        console.log(data);
    },
    fail: function (data) {
        console.log(data);
    },
    always: function (data) {
        console.log(data);
    }
});

2. 指定した複数レコードを削除する場合(レコードIDが135,376のレコードを削除)

JavaScript
$p.apiBulkDelete({
    id: 123,
    data: {
        Selected: [
            135,
            376
        ]
    },
    done: function (data) {
        console.log(data);
    },
    fail: function (data) {
        console.log(data);
    },
    always: function (data) {
        console.log(data);
    }
});

3. 対象テーブルの全レコードを削除する場合

JavaScript
$p.apiBulkDelete({
    id: 123,
    data: {
        All: true
    },
    done: function (data) {
        console.log(data);
    },
    fail: function (data) {
        console.log(data);
    },
    always: function (data) {
        console.log(data);
    }
});

4. 一覧画面でチェックしたレコードを削除する場合

JavaScript
$p.apiBulkDelete({
    id: 123,
    data: {
        GridCheck: true
    },
    done: function (data) {
        console.log(data);
    },
    fail: function (data) {
        console.log(data);
    },
    always: function (data) {
        console.log(data);
    }
});

5. 一覧画面でチェックしたレコードを物理削除する場合

JavaScript
$p.apiBulkDelete({
    id: 123,
    data: {
        GridCheck: true,
        PhysicalDelete: true
    },
    done: function (data) {
        console.log(data);
    },
    fail: function (data) {
        console.log(data);
    },
    always: function (data) {
        console.log(data);
    }
});

サンプルコード

Note

コード内の【 ... 】は適宜修正してください。

1. 削除対象のレコードを取得してからIDを指定して一括削除します。

削除対象のレコード(当サンプルでは「保留」)を事前に取得し、削除対象のIDをログに出力してから一括削除します(データ取得APIと削除APIの計2回を実行)。
削除したIDが記録として残るため、事後の証跡確認や追跡がしやすい場面に向いています。

実務での使いどころ

「保留」のまま止まった申請を、月末にまとめて片付けるといった定期的な整理に使えます。削除する前に対象のIDをログに残すので、あとから「どのレコードを消したか」を確かめられます。論理削除(PHYSICAL_DELETE = false)であれば、残したIDをもとに、誤って消したレコードを探して元に戻すこともできます。

// ============================
// 設定
// ============================
// 削除対象レコードが登録されているサイトID
const SITE_ID = 【サイトID】;
// 削除対象ステータス(保留=Status:910)
const TARGET_STATUS = '["910"]';
// 物理削除する場合はtrue(復元不可)
const PHYSICAL_DELETE = false;

// ============================
// 1) 保留(910)のレコードを取得(削除対象の事前確認)
// ============================
$p.apiGet({
    id: SITE_ID,
    data: {
        View: {
            ColumnFilterHash: {
                Status: TARGET_STATUS
            }
        }
    },
    done: function (data) {
        const rows = (data.Response && data.Response.Data) || [];
        if (rows.length === 0) {
            console.log('削除対象データなし');
            return;
        }
        console.log('削除対象レコード件数:', rows.length);
        // 2) 取得したレコードのIDをまとめる
        const recordIds = rows
            .map(function (row) {
                return row.ResultId || row.Id;
            })
            .filter(function (id) {
                return typeof id === 'number' && id > 0;
            });
        if (recordIds.length === 0) {
            console.log('削除対象IDが取得できませんでした');
            return;
        }
        console.log('削除対象ID一覧:', recordIds);
        // 3) 取得したIDを指定して一括削除
        $p.apiBulkDelete({
            id: SITE_ID,
            data: {
                Selected: recordIds,
                PhysicalDelete: PHYSICAL_DELETE
            },
            done: function (deleteData) {
                console.log('実行結果:', deleteData);
            },
            fail: function (deleteData) {
                console.log('失敗:', deleteData);
            }
        });
    },
    fail: function (data) {
        console.log('レコード取得失敗:', data);
    }
});

実行結果

削除対象レコード件数: 5
削除対象ID一覧: (5) [3635, 3634, 3633, 3632, 3631]
実行結果: {Id: 316, StatusCode: 200, Message: 'サンプル案件: 5 件 一括削除しました。'}
2. 削除対象のレコードを直接フィルタし一括削除します。

削除対象のレコード(当サンプルでは「保留」)を条件で直接フィルタし、IDの記録を残さずに一括削除します(削除APIの1回のみを実行)。
処理がシンプルで速いため、証跡が不要な検証環境などで手軽さを重視したい場面に向いています。

実務での使いどころ

検証環境で動作確認のたびに溜まる「保留」のテストデータを、まとめて片付けるといった場面に使えます。対象を事前に取得しないので API の呼び出しが 1 回で済み、件数が多くても手早く消せます。削除したIDは残らないため、本番のデータには 1. の方法を使ってください。

// ============================
// 設定
// ============================
// 削除対象レコードが登録されているサイトID
const SITE_ID = 【サイトID】;
// 削除対象ステータス(保留=Status:910)
const TARGET_STATUS = '["910"]';
// 物理削除する場合はtrue(復元不可)
const PHYSICAL_DELETE = false;

// ============================
// 保留(910)のレコードを条件フィルタで直接一括削除
// ============================
$p.apiBulkDelete({
    id: SITE_ID,
    data: {
        View: {
            ColumnFilterHash: {
                Status: TARGET_STATUS
            }
        },
        PhysicalDelete: PHYSICAL_DELETE
    },
    done: function (data) {
        console.log('削除成功:', data);
    },
    fail: function (data) {
        console.log('削除失敗:', data);
    }
});

実行結果

削除成功: {Id: 999, StatusCode: 200, Message: 'サンプル案件: 5件 一括削除しました。'}