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