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

kintoneで他アプリにレコード情報を新規登録したいのですが、どのように実装すれば良いのでしょうか。

kintoneにおけるJavaScriptカスタマイズではREST APIが使えます。
POST処理を行うことで他アプリにレコードを新規登録できます。

この記事ではAPIを使ったレコードの登録(POST)処理について解説します。

この記事で何が分かる?
  • kintoneのJavaScriptカスタマイズでは、REST APIを使えます。
  • レコード情報を新規登録するには、POST処理を行います。
  • POST処理は2種類あります。
    ・1件登録する
    ・複数件登録する
  • REST APIは非同期処理です。同期処理にするには「async/await」を使います。
目次

kintoneのレコード情報の新規登録(POST)

kintoneでレコードを保存する時、同時に他のアプリにもレコードを登録したいということはないでしょうか。

JavaScriptカスタマイズでは、REST APIのPOST処理を使えば、任意のタイミングで他アプリにレコード情報を新規登録できます。

新規登録できるレコードも1件だけではなく、複数件のレコードを一括登録できます。

1件登録する方法複数件登録する方法の両方をコードで解説します。

レコードを1件登録する

レコードを1件登録する場合は、アプリIDとレコードIDを使います。

以下のコードでは、レコード追加保存時にアプリID:119に新規登録します。

(() => {

	'use strict';

	kintone.events.on(['app.record.create.submit'], event => {

		const record = event.record;

		const params = {
			app: 119,		// アプリID
			record: {		// レコード情報
				氏名: {
					value: [{ code: kintone.getLoginUser().code }]
				},
				内容: {
					value: record.対応内容.value
				}
			}
		};

		return kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', params).then((resp) => {
			// POST成功
			alert('アプリ119にレコードを登録しました。');
			return event;
		}).catch((error) => {
			// POSTエラー
			console.log(error);
			event.error = 'エラーが発生しました。';
			return event;
		});

	});

})()

REST APIは非同期処理です。

即ち、APIを実行している間に、後続の処理が並列して実行されます。

例えば、レコード保存時や削除時にAPIを実行すると、その結果が返ってくる前に保存や削除が完了してしまいます。

そのため、保存完了を待つために、kintone.apiを「return」します。

これにより「Promise」を使った同期処理になります。

POST後の処理は「.then()」に続く関数内に記述します。

一方でPOSTがエラーの場合の処理は「.catch()」に続く関数内に記述します。

エラーの場合はレコードの保存をキャンセルしたいため、「event.error」を設定します。

エラーの書き方については以下記事でも解説しました。

レコードを複数件登録する

レコードを複数件登録する場合は、登録する件数分のレコード情報をパラメータとして渡します。

以下のコードでは、サブテーブルの各行を他のアプリにレコードとして登録します。

(() => {

	'use strict';

	kintone.events.on(['app.record.create.submit'], async event => {

		const record = event.record;

		const postRecords = record.サブテーブル.value.map((row) => {
			return {
				氏名: {
					value: row.value.サブテーブル_対応者.value
				},
				内容: {
					value: row.value.サブテーブル_対応内容.value
				}
			};
		});

		try {

			const params = {
				app: 119,		// アプリID
				records: postRecords	// レコード情報
			};

			await kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', params);

			alert('アプリ119にレコードを登録しました。');
			return event;

		} catch (e) {
			// POSTエラー
			console.log(e);
			event.error = 'エラーが発生しました。';
			return event;
		}

	});

})()

サブテーブルは「map」を使い、全行をループしつつ、登録用のレコード配列に追加します。

この配列とアプリIDをPOST時のパラメータとします。

APIのURLは、複数件の登録の場合は「kintone.api.url(‘/k/v1/records.json’, true)」のように「records」である点に注意です。

先に述べた通り、REST APIは非同期処理です。

先ほどはkintone.apiを「return」することでPromise処理による同期処理としましたが、こちらは「async/await」を使いました。

この記事のまとめ
  • kintoneのJavaScriptカスタマイズでは、REST APIを使えます。
  • レコード情報を新規登録するには、POST処理を行います。
  • POST処理は2種類あります。
    ・1件登録する
    ・複数件登録する
  • REST APIは非同期処理です。同期処理にするには「async/await」を使います。
目次