kintoneで他アプリのレコードを削除したいのですが、どのように実装すれば良いのでしょうか。
kintoneにおけるJavaScriptカスタマイズではREST APIが使えます。
DELETE処理を行うことで他アプリのレコードを削除できます。
この記事ではAPIを使ったレコードの削除(DELETE)処理について解説します。
- kintoneのJavaScriptカスタマイズでは、REST APIを使えます。
- レコード情報を削除するには、DELETE処理を行います。
- DELETE処理は1件であっても複数件であっても同じ記法です。
- REST APIは非同期処理です。同期処理にするには「async/await」を使います。
kintoneのレコードの削除(DELETE)
kintoneでレコードを削除する時、同時に他のアプリのレコードを削除したいということはないでしょうか。
JavaScriptカスタマイズでは、REST APIのDELETE処理を使えば、任意のタイミングで他アプリのレコードを削除できます。
削除できるレコードも1件だけではなく、複数件のレコードを一括削除できます。
但し、他APIと異なり、DELETEは1件であっても複数件であっても同じ記法です。
レコードを削除する
レコードを削除する場合は、アプリIDとレコードIDを使います。
利用場面としては更新対象のレコードをGETした上でDELETEすることが多いです。
以下のコードでは、アプリID:119に設置した参照元レコード番号(数値フィールド)の値が自レコードIDと一致するものをGETし、それらをDELETEします。
(() => {
'use strict';
kintone.events.on(['app.record.detail.delete.submit'], async event => {
const record = event.record;
try {
const getParams = {
app: 119, // アプリID
query: `参照元レコード番号 = ${record.$id.value}`, // クエリ
fields: ['$id'] // 取得フィールド
};
const getResp = await kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', getParams);
// 削除対象のレコードID配列
const deleteIds = getResp.records.map((getRecord) => {
return getRecord.$id.value;
});
const deleteParams = {
app: 119, // アプリID
ids: deleteIds // レコードID配列
};
await kintone.api(kintone.api.url('/k/v1/records.json', true), 'DELETE', deleteParams);
alert('アプリ119のレコードを削除しました。');
return event;
} catch (e) {
// DELETEエラー
console.log(e);
event.error = 'エラーが発生しました。';
return event;
}
});
})()
まずはクエリを使って条件を指定しGETします。
GETするフィールドは「$id(レコードID)」とします。
GETしたレコード群は「map」を使って各レコードをループしつつ、削除用のレコードID配列(deleteIds)に追加します。
このレコードID配列とアプリIDをDELETE時のパラメータとします。
APIのURLは、削除対象が1件であっても複数件であっても「kintone.api.url(‘/k/v1/records.json’, true)」のように「records」である点に注意です。
REST APIは非同期処理です。
即ち、APIを実行している間に、後続の処理が並列して実行されます。
例えば、レコード保存時や削除時にAPIを実行すると、その結果が返ってくる前に保存や削除が完了してしまいます。
そのため、削除完了を待つために「async/await」を使いました。
GETやDELETEの処理が失敗した場合のエラー処理は「.catch()」に続く関数内に記述します。
エラーの場合はレコードの保存をキャンセルしたいため、「event.error」を設定します。
- kintoneのJavaScriptカスタマイズでは、REST APIを使えます。
- レコード情報を削除するには、DELETE処理を行います。
- DELETE処理は1件であっても複数件であっても同じ記法です。
- REST APIは非同期処理です。同期処理にするには「async/await」を使います。