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