kintoneで、日付フィールドを含むサブテーブルをコピー、ペーストしたい

いつもお世話になっております。

kintoneのレコード編集時に、ボタン押下でサブテーブル①からサブテーブル②への値コピーをさせたいです。サブテーブル①もサブテーブル②も同じアプリ内のフィールドです。

コピーボタンは実装済みですが、これまでサブテーブル内のフィールドが文字列のみだった場合には成功していたのですが、今回仕様を変更して日付フィールドを追加したら、type: row.value[column].type,の部分に対して、can not read propertyのエラーが出てしまい、動かなくなってしまいました。

サブテーブル内に日付フィールドが含まれたことが本当の原因かはわかりませんが、下記にコードを記載いたしますので、修正のアドバイスをいただくことはできないでしょうか。

※コードブロックに貼り付けしたかったのですが、プレーンテキスト貼り付けや普通のペースト操作をしてもブロックが消えてしまい思ったように貼られなかったので、テキストのままで失礼いたします。

(() => {
  ‘use strict’;

//ボタン押下でサブテーブル間の値をコピーする
  let subTableColumns = {
    ‘文字列Aコピー元’: ‘文字列Aコピー先’,
    ‘文字列Bコピー元’: ‘文字列Bコピー先’,
    ‘文字列Cコピー元’: ‘文字列Cコピー先’,
    ‘文字列Dコピー元’: ‘文字列Dコピー先’,
    ‘日付Aコピー元’: ‘日付Aコピー先’
  }; // 左にコピー元サブテーブルのフィールドコード、右にコピー先サブテーブルのフィールドコード

  kintone.events.on([‘app.record.create.show’, ‘app.record.edit.show’], (event) => {
    let subTableCopyButton = document.createElement(‘button’);
    subTableCopyButton.setAttribute(‘class’, ‘kintoneplugin-button-dialog-ok’);

    subTableCopyButton.innerHTML = ‘サブテーブルのコピー実行’;

      kintone.app.record.set(recordData);
    };
    subTableCopyButton.onclick = () => {
      let recordData = kintone.app.record.get(), rec = recordData.record;
      rec[‘コピー先テーブル’].value = rec[‘コピー元テーブル’].value.map((row) => {
        let addRow = {
          value: {}
        };
        Object.keys(subTableColumns).forEach((column) => {
          addRow.value[subTableColumns[column]] = {
            type: row.value[column].type,
            value: row.value[column].value
          };
        });
        return addRow;
      });
      kintone.app.record.set(recordData);
    };
    kintone.app.record.getSpaceElement(‘btn_subtable’).appendChild(subTableCopyButton);
    return event;
  });
})();

懐かしいコードですね。今見ると何とも言えない気持ちになります。

「can not read property」のエラーは、そのまま「プロパティが見付からない」という意味で、慣れない内は「property “type”」となっている部分の手前の部分が存在していないかそれ以上参照できない値になっていると覚えると良いです。「row.value[column].type」のtypeにエラーが出ているのであれば「row.value[column]」が存在していないかそれ以上参照できないという意味です。すなわち「row.value[subTableColumnsで指定したフィールドコード]」が存在していないということで、最初のフィールドコードの指定が違うのではないかと思います。

mls-hashimoto 様

お世話になっております。

日付型のフィールドを新しく入れたために、型の指定エラーだとばかり思い込んでおりました。

ご説明いただき、漸く理解することができました。

結論、一部"コピー元"と"コピー先"の順序が逆になっておりました。修正し、正常に動くようになりました。

理解が遅く、初歩的な部分で立ち止まってばかりで申し訳ございません。

本当に、ありがとうございます。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。