【kintone】JavaScriptの書き方(DELETE API)【カスタマイズAPI編】

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」を使います。
目次