同じアプリ内にサブテーブル⇒サブテーブルでコピーする

お世話になります。

1つのアプリに入力用のテーブルがあります。
レコードの保存時に、テーブル行数に合わせ同じアプリ内の別テーブルに、
その内容をコピーしたいと考えております。
下記コードで作成してみたのですが、うまく動きません。

エラーコードは
Uncaught TypeError: Cannot read properties of undefined (reading ‘value’)
が出ます。

また入力用のTable1の中身が変わった場合も、Table2、Table3も同様に変更される
にしたいと考えております。どのようにすべきでしょうか。
アドバイス頂きたく、よろしくお願いいたします。

(function() {
"use strict";
var event1 = [
'app.record.create.submit',
'app.record.create.change.Table1',
'app.record.edit.submit',
'app.record.edit.change.Table1'
];
kintone.events.on(event1, function(event) {
var record = event.record;
var rowNo = record.Table1.value.length;
record.Table1No.value = rowNo;
return event;
});

var event2 = [
'app.record.create.submit',
'app.record.edit.submit',
];
kintone.events.on(event2, function(event) {
var record = event.record;

record.Table2.value = [];
for (var i = 0; i < 3; i++){
record.Table2.value.push({
"value": {
"No2":{
"type":"SINGLE_LINE_TEXT",
"value":record.Table1.value[i].value.No1.value
},
"Text2":{
"type":"SINGLE_LINE_TEXT",
"value":record.Table1.value[i].value.Text1.value
}
}
});
}

record.Table3.value = [];
for (var j = 4;j < 7; j++){
record.Table3.value.push({
"value": {
"No3":{
"type":"SINGLE_LINE_TEXT",
"value":record.Table1.value[j].value.No1.value
},
"Text3":{
"type":"SINGLE_LINE_TEXT",
"value":record.Table1.value[j].value.Text1.value
}
}
});
}
return event;
});
})();

すみません、解決できてしまったのでコード貼り付けておきます。

更新も何も常に[]で空になるので更新も問題はなさそうです。

var event2 = [
'app.record.create.submit',
'app.record.edit.submit',
];
kintone.events.on(event2, function(event) {
var record = event.record;
var rowNo = record.Table1.value.length;
var table1 = record.Table1.value;

record.Table2.value = [];
record.Table3.value = [];
if (rowNo<4){
for (var i = 0; i < rowNo; i++){
var No1 = record.Table1.value[i].value.No1.value;
var Text1 = record.Table1.value[i].value.Text1.value;
record.Table2.value.push({
"value": {
"No2":{
"type":"SINGLE_LINE_TEXT",
"value":No1
},
"Text2":{
"type":"SINGLE_LINE_TEXT",
"value":Text1
}
}
});
}
} else if (rowNo<7){
for (var j = 0; j < 3; j++){
var No2 = record.Table1.value[j].value.No1.value;
var Text2 = record.Table1.value[j].value.Text1.value;
record.Table2.value.push({
"value": {
"No2":{
"type":"SINGLE_LINE_TEXT",
"value":No2
},
"Text2":{
"type":"SINGLE_LINE_TEXT",
"value":Text2
}
}
});
}
for (var k = 3;k < rowNo; k++){
var No3 = record.Table1.value[k].value.No1.value;
var Text3 = record.Table1.value[k].value.Text1.value;
record.Table3.value.push({
"value": {
"No3":{
"type":"SINGLE_LINE_TEXT",
"value":No3
},
"Text3":{
"type":"SINGLE_LINE_TEXT",
"value":Text3
}
}
});
}
}
return event;
});

こんにちは。

ご記入通りを試しましたら、コピーができませんでした。

event1が必要でしょうか。

教えて頂ければ、幸甚です。

TL様

こんにちは

event1は必要ないです。

event1では、Table1Noというフィールドコードに

Table1の行数を入れているだけですので…

 

event2 ⇒ eventになおしてコード作り直しました。

尚テーブル内のNo1(2,3)、Text1(2,3)どちらも文字列(1行)です。

(function() {
    "use strict";
    
    var event = [
        'app.record.create.submit',
        'app.record.edit.submit',
        ];
    kintone.events.on(event, function(event) {
        var record = event.record;
        var rowNo = record.Table1.value.length;
        var table1 = record.Table1.value;
        
        record.Table2.value = [];
        record.Table3.value = [];
        if (rowNo<4){
            for (var i = 0; i < rowNo; i++){
                var No1 = record.Table1.value[i].value.No1.value;
                var Text1 = record.Table1.value[i].value.Text1.value;
                record.Table2.value.push({
                    "value": {
                        "No2":{
                            "type":"SINGLE_LINE_TEXT",
                            "value":No1
                        },
                        "Text2":{
                            "type":"SINGLE_LINE_TEXT",
                            "value":Text1
                        }
                    }
                });
            }
        } else if (rowNo<7){
            for (var j = 0; j < 3; j++){
                var No2 = record.Table1.value[j].value.No1.value;
                var Text2 = record.Table1.value[j].value.Text1.value;
                record.Table2.value.push({
                    "value": {
                        "No2":{
                            "type":"SINGLE_LINE_TEXT",
                            "value":No2
                        },
                        "Text2":{
                            "type":"SINGLE_LINE_TEXT",
                            "value":Text2
                        }
                    }
                });
            }
            for (var k = 3;k < rowNo; k++){
                var No3 = record.Table1.value[k].value.No1.value;
                var Text3 = record.Table1.value[k].value.Text1.value;
                record.Table3.value.push({
                    "value": {
                        "No3":{
                            "type":"SINGLE_LINE_TEXT",
                            "value":No3
                        },
                        "Text3":{
                            "type":"SINGLE_LINE_TEXT",
                            "value":Text3
                        }
                    }
                });
            }
        }
        return event;
   });
})();

 

Tofu様

成功しました!

ご指導、ありがとうございます。

TL様

うまくいったようで、良かったです。

初めて自分のコードを使ってもらったので、出来なかったらどうしようと

思っておりました。安心しました。

それでは。

Tofu様

使わせて頂き、本当に感謝しています。

少し欲を出して、3列があるのテーブルをコピーしょうと思い、Table1に"Text_1",Table2に"Text_2",Table1に"Text_3"を追加し、コードは下記のように書き換えしましたが、うまくいきませんでした。コードの書き換え方は間違えっていますか。

ご教授頂けませんでしょうか。

(function() {
    “use strict”;
    
    var event = [
        ‘app.record.create.submit’,
        ‘app.record.edit.submit’,
        ];
    kintone.events.on(event, function(event) {
        var record = event.record;
        var rowNo = record.Table1.value.length;
        var table1 = record.Table1.value;
        
        record.Table2.value = [];
        record.Table3.value = [];
        if (rowNo<4){
            for (var i = 0; i < rowNo; i++){
                var No1 = record.Table1.value[i].value.No1.value;
                var Text1 = record.Table1.value[i].value.Text1.value;
        var Text_1 = record.Table1.value[i].value.Text_1.value;
                record.Table2.value.push({
                    “value”: {
                        “No2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:No1
                        },
                        “Text2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text1
                        }
            “Text_2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text_1
                        }
                    }
                });
            }
        } else if (rowNo<7){
            for (var j = 0; j < 3; j++){
                var No2 = record.Table1.value[j].value.No1.value;
                var Text2 = record.Table1.value[j].value.Text1.value;
        var Text_2 = record.Table1.value[j].value.Text_1.value;
                record.Table2.value.push({
                    “value”: {
                        “No2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:No2
                        },
                        “Text2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text2
                        }
            “Text_2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text_2
                        }
                    }
                });
            }
            for (var k = 3;k < rowNo; k++){
                var No3 = record.Table1.value[k].value.No1.value;
                var Text3 = record.Table1.value[k].value.Text1.value;
        var Text_3 = record.Table1.value[k].value.Text_1.value;
                record.Table3.value.push({
                    “value”: {
                        “No3”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:No3
                        },
                        “Text3”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text3
                        }
            “Text_3”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text_3
                        }
                    }
                });
            }
        }
        return event;
   });
})();

TL様

拝見しましたが、valueを定義していないからではないかと思います。

for (var i = 0; i < rowNo; i++){
    var No1 = record.Table1.value[i].value.No1.value;
    var Text1 = record.Table1.value[i].value.Text1.value;
の下に
var Text_1 = record.Table1.value[i].value.Text_1.value;
を追加すればいいかと思います。追加で、
    var Text_2 = record.Table1.value[j].value.Text_1.value;
    var Text_3 = record.Table1.value[k].value.Text_1.value;
もそれぞれの下に加えれば問題ないと思います。

ご指摘通り、下記のようにしました。成功でした。ありがとうございました!

(function() {
    “use strict”;
    
    var event = [
        ‘app.record.create.submit’,
        ‘app.record.edit.submit’,
        ];
    kintone.events.on(event, function(event) {
        var record = event.record;
        var rowNo = record.Table1.value.length;
        var table1 = record.Table1.value;
        
        record.Table2.value = [];
        record.Table3.value = [];
        if (rowNo<4){
            for (var i = 0; i < rowNo; i++){
                var No1 = record.Table1.value[i].value.No1.value;
                var Text1 = record.Table1.value[i].value.Text1.value;
        var Text_1 = record.Table1.value[i].value.Text_1.value;
                record.Table2.value.push({
                    “value”: {
                        “No2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:No1
                        },
                        “Text2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text1
                        },
            “Text_2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text_1
                        }
                    }
                });
            }
        } else if (rowNo<7){
            for (var j = 0; j < 3; j++){
                var No2 = record.Table1.value[j].value.No1.value;
                var Text2 = record.Table1.value[j].value.Text1.value;
        var Text_2 = record.Table1.value[j].value.Text_1.value;
                record.Table2.value.push({
                    “value”: {
                        “No2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:No2
                        },
                        “Text2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text2
                        },
            “Text_2”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text_2
                        }
                    }
                });
            }
            for (var k = 3;k < rowNo; k++){
                var No3 = record.Table1.value[k].value.No1.value;
                var Text3 = record.Table1.value[k].value.Text1.value;
        var Text_3 = record.Table1.value[k].value.Text_1.value;
                record.Table3.value.push({
                    “value”: {
                        “No3”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:No3
                        },
                        “Text3”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text3
                        },
            “Text_3”:{
                            “type”:“SINGLE_LINE_TEXT”,
                            “value”:Text_3
                        }
                    }
                });
            }
        }
        return event;
   });
})();