今回は2つのテーブルを合体させる方法です。
テーブル1、2に値を入力すると、テーブル3にまとめられます。
アプリの準備
フィールド種類 | フィールドコード | 備考 |
---|---|---|
テーブル | テーブル1 | |
テーブル | テーブル2 | |
テーブル | テーブル3 | |
文字列(1行) | 名前1 | テーブル1用 |
数値 | 年齢1 | テーブル1用 |
文字列(1行) | 名前2 | テーブル2用 |
数値 | 年齢2 | テーブル2用 |
文字列(1行) | 名前3 | テーブル3用 |
数値 | 年齢3 | テーブル3用 |
JavaScript
レコード追加&編集画面の値変更時のイベントで動かします。
このコード内ではやっていませんが、テーブル3を編集不可にしておくと良いかもしれません。
kintone.events.on(
[
"app.record.create.change.名前1",
"app.record.create.change.名前2",
"app.record.create.change.年齢1",
"app.record.create.change.年齢2",
"app.record.create.change.テーブル1",
"app.record.create.change.テーブル2",
// 編集のときも同様にフィールド指定してね。
],
(event) => {
// テーブル3 消しとく
event.record.テーブル3.value = [];
// テーブル3の行になるもの
const tb3Rows = [];
// テーブル1 の行を tb3Rowsに追加する
event.record.テーブル1.value.forEach((element) => {
if (
element.id ||
element.value.名前1.value ||
element.value.年齢1.value
) {
const r = {
id: element.id,
value: { 名前3: element.value.名前1, 年齢3: element.value.年齢1 },
};
tb3Rows.push(r);
}
});
// テーブル2 の行を tb3Rowsに追加する
event.record.テーブル2.value.forEach((element) => {
if (
element.id ||
element.value.名前2.value ||
element.value.年齢2.value
) {
const r = {
id: element.id,
value: { 名前3: element.value.名前2, 年齢3: element.value.年齢2 },
};
tb3Rows.push(r);
}
});
// tb3Rowsをテーブル3の行にする
event.record.テーブル3.value = tb3Rows;
return event;
}
);