新規投稿
フォローする

サブテーブルを取得し、他アプリのサブテーブルにコピー

アプリAのテーブル内に[社内No][工事名][内容][作業]フィールドがあり、アプリBの通常フィールドの[社内No]というフィールドに数字を入力するとアプリAの全レコードの中で社内Noが同じ値のサブテーブルをアプリBのテーブル内の[工事名][内容][作業]に自動追加されるものを実現しようと考えています

下記のコードでは同じ社内Noのレコードを取得してアプリBのサブテーブルに追加されているのですが

アプリAで社内Noが重複するサブテーブルがあるのですが現状では1つのサブテーブルしか取得できません

初歩的なことだと思いますがどなたかご教授頂けないでしょうか!

曖昧な説明で申し訳ありませんがよろしくお願いします。

 

'use strict';
var events=['app.record.create.change.No1'];

kintone.events.on(events,function(event){
var No=event.record.No1.value;

var bodys={
'app':appid,
'totalCount':'true',
'query':'社内No in ("'+No+'")',
'field':['$id']["ドロップダウン"]
};


kintone.api(kintone.api.url('/k/v1/records', true), 'GET', bodys, function(resp) {
var record=kintone.app.record.get();
// if(resp.record.length>=1){
var Table11 =record.record.Table1.value;//コピーてーぶる

//console.log(event.record.No.value);
console.log(resp);
if(Table11.length===1){

Table11.splice(1);

for(var i=0;i<resp.records.length;i++){
Table11[i].value.name.value=resp.records[i].ドロップダウン.value;
  Table11[i].value.日付1.value=resp.records[i].日付.value;
 
for(var j=0;j<resp.records[i].Table.value.length;j++){
if(resp.records[i].Table.value[j].value.社内No.value===No){

Table11[i].value['工事名1'].value=resp.records[i].Table.value[j].value.工事名.value;
Table11[i].value['開始1'].value=resp.records[i].Table.value[j].value.開始.value;
Table11[i].value['終了1'].value=resp.records[i].Table.value[j].value.終了.value;
  Table11[i].value['内容1'].value=resp.records[i].Table.value[j].value.内容.value;
Table11[i].value['作業内容1'].value=resp.records[i].Table.value[j].value.作業内容.value;

}
}
kintone.app.record.set(record);

Table11.push({
value:{
"日付1":{
type:"DATE",
value:"",
},
"name":{
type:"SINGLE_LINE_TEXT",
value:"",
},

"開始1":{
type:"TIME",
value:"",
},
 "終了1":{
  type:"TIME",
  value:"",
},
"計算":{
type:"CALC",
value:"",
},
 "客先1":{
  type:"SINGLE_LINE_TEXT",
  value:"",
},
"工事名1":{
type:"SINGLE_LINE_TEXT",
value:"",
},
"内容1":{
type:"SINGLE_LINE_TEXT",
value:"",
},
"作業内容1":{
type:"SINGLE_LINE_TEXT",
value:"",
}
}
});
}

kintone.app.record.set({record:record.record});
}
Table11.pop(); //最後の行消す

record.record.テーブル数.value = Table11.length;
kintone.app.record.set({record:record.record});




return event;

});

});
})();

 

0

1件のコメント

Avatar
ウレット

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

ご質問いただいた件ですが、テーブルの行を追加するためには"都度"pushが必要になります。
ヤマダ様のコードですと、0行目に1つ目の内容が転記された後は、行が追加されていないため入るための行が存在しない状態になっています。
また、spliceではなくpopで最初の行を消すと良いかと思います。

以下、ちょっと端折って同じようなアプリで試したコードになりますので、ご確認ください。(kintone.apiの実行部分以下です)
変数名はわかりやすく日本語にしています。

 

    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', bodys, function (resp) {

var record = kintone.app.record.get();

var Table11 = record.record.Table1.value;//コピーてーぶる

if (Table11.length === 1) {

Table11.pop(); //1行目を消す

for (var i = 0; i < resp.records.length; i++) {

for (var j = 0; j < resp.records[i].Table.value.length; j++) {

if (resp.records[i].Table.value[j].value.社内No.value === No) {

var 工事名 = resp.records[i].Table.value[j].value.工事名.value;

var 内容 = resp.records[i].Table.value[j].value.内容.value;

var 作業内容 = resp.records[i].Table.value[j].value.作業内容.value;

// 行を追加

Table11.push({

value: {

"工事名1": {

type: "SINGLE_LINE_TEXT",

value: 工事名,

},

"内容1": {

type: "SINGLE_LINE_TEXT",

value: 内容,

},

"作業内容1": {

type: "SINGLE_LINE_TEXT",

value: 作業内容,

}

}

});

}

}

kintone.app.record.set(record);

}

}

return event;

});
0
サインインしてコメントを残してください。