LoginSignup
0
0

More than 1 year has passed since last update.

kintoneで2つのテーブルを合体させる方法

Last updated at Posted at 2021-09-17

今回は2つのテーブルを合体させる方法です。

テーブル1、2に値を入力すると、テーブル3にまとめられます。

image.png

アプリの準備

フィールド種類 フィールドコード 備考
テーブル テーブル1
テーブル テーブル2
テーブル テーブル3
文字列(1行) 名前1 テーブル1用
数値 年齢1 テーブル1用
文字列(1行) 名前2 テーブル2用
数値 年齢2 テーブル2用
文字列(1行) 名前3 テーブル3用
数値 年齢3 テーブル3用

image.png

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;
  }
);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0