いつもお世話になっております。
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;
});
})();