kintoneのサブテーブルを他アプリにコピーしたいのですが、どのように実装すれば良いでしょうか。
JavaScriptを使い、サブテーブル操作とPOST APIによって実装できます。
この記事ではサブテーブルのコピーについて解説します。
【kintone】JavaScriptの書き方(サブテーブル操作)【カスタマイズ基礎編】
前回の記事ではkintoneのフィールドの値操作について解説しました。 続いて、kintoneにおけるJavaScriptカスタマイズでは「サブテーブル操作」を定義できます。 この記…
【kintone】JavaScriptの書き方(POST API)【カスタマイズAPI編】
kintoneで他アプリにレコード情報を新規登録したいのですが、どのように実装すれば良いのでしょうか。 kintoneにおけるJavaScriptカスタマイズではREST APIが使えます。…
この記事で何が分かる?
- kintoneのJavaScriptカスタマイズによってサブテーブルを他アプリにコピーできます。
- サブテーブルをそのまま他アプリへコピーする場合は、サブテーブルの値をPOST APIのパラメータにそのまま指定するだけです。
- サブテーブル内の特定の条件を満たす行のみをコピーする場合は、filter関数を使って特定の行のみを抽出して配列を作ります。
目次
kintoneのサブテーブルを他アプリにコピーするには
kintoneではPOST APIを使うことで他アプリにレコードを登録できます。
POSTする際のパラメータにサブテーブルの値を指定することで、サブテーブルをそのまま登録(コピー)することができます。
そのまま登録するのも良いですが、この記事では特定の条件を満たす行のみをコピーする処理も記述してみます。
実装例:サブテーブルをそのままコピーする
サブテーブルをそのままコピーすることは非常にシンプルで、POST APIのパラメータにサブテーブルをそのまま指定するだけです。
以下コードでは、レコード追加保存時にアプリID:119にサブテーブルを含むレコードを新規登録します。
サブテーブルは同じデータがコピーされた形となります。
(() => {
'use strict';
kintone.events.on(['app.record.create.submit'], async event => {
const record = event.record;
try {
const params = {
app: 119, // アプリID
record: { // レコード情報
サブテーブル: {
value: record.サブテーブル.value
}
}
};
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', params);
alert('レコードを登録しました。');
return event;
} catch (e) {
// POSTエラー
console.log(e);
event.error = 'エラーが発生しました。';
return event;
}
});
})()
実装例:サブテーブル内の特定の条件を満たす行のみをコピーする
以下コードでは、サブテーブル内の行のうち、数値フィールドが1000より大きい値となる行のみを他アプリにコピーします。
(() => {
'use strict';
kintone.events.on(['app.record.create.submit'], async event => {
const record = event.record;
// 数値フィールドが1000より大きい行だけを配列に追加
const postTable = record.サブテーブル.value.filter((row) => {
return row.value.サブテーブル_数値.value > 1000;
});
try {
const params = {
app: 119, // アプリID
record: { // レコード情報
サブテーブル: {
value: postTable
}
}
};
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', params);
alert('レコードを登録しました。');
return event;
} catch (e) {
// POSTエラー
console.log(e);
event.error = 'エラーが発生しました。';
return event;
}
});
})();
サブテーブルに対して「filter」を使うことで、特定の条件を満たすものだけを抽出して配列を作ります。
この配列とアプリIDをパラメータとしてPOSTします。
今回は数値フィールドが1000より大きい行のみという条件としましたが、条件は複数あっても可能です。
サブテーブルは他フィールドとは性質が異なるため、ハードルが少し高いと感じてしまいますが、基本は配列構造です。
JavaScriptの配列操作を覚えてしまえば難しいことはありません。
この記事のまとめ
- kintoneのJavaScriptカスタマイズによってサブテーブルを他アプリにコピーできます。
- サブテーブルをそのまま他アプリへコピーする場合は、サブテーブルの値をPOST APIのパラメータにそのまま指定するだけです。
- サブテーブル内の特定の条件を満たす行のみをコピーする場合は、filter関数を使って特定の行のみを抽出して配列を作ります。
【kintone】JavaScriptの書き方(サブテーブル操作)【カスタマイズ基礎編】
前回の記事ではkintoneのフィールドの値操作について解説しました。 続いて、kintoneにおけるJavaScriptカスタマイズでは「サブテーブル操作」を定義できます。 この記…
【kintone】JavaScriptの書き方(POST API)【カスタマイズAPI編】
kintoneで他アプリにレコード情報を新規登録したいのですが、どのように実装すれば良いのでしょうか。 kintoneにおけるJavaScriptカスタマイズではREST APIが使えます。…