連投失礼致します。
タイトルについてもご質問させてください。
テーブルデータには
・日付
・担当(A部、B部)
・使用品
の3つ設定しています。
他に複数文字列は、A部 、B部という転記用のフィールドを設定しています。
転記する内容は使用品のみで問題ないのですが、提出書類の関係で、担当別で2つに記載が必要で、あわせて重複の使用品を提出書類からは省く必要が出てきました。
複数文字列行に転記するまではこちらの過去の情報を参考にさせていただき実行することができたのですが、担当別に転記フィールドをわける、さらに重複を省くという方法がどうしてもわかりません。
恐縮ですがどなたかご指南をいただけますと幸いです。
(function() {
‘use strict’;
kintone.events.on([‘app.record.edit.show’,‘app.record.create.show’], function(event) {
varrecord=event.record;
vartableData=record.itemfield.value;
varsetData=“”;
for(vari=0; i<tableData.length; i++) {
varrow=tableData[i].value;
setData+=row.使用品.value +" ";
}
record.alldata.value =setData;
returnevent;
});
})();
タイミング的に保存前タイミングかなと思いsubmitイベントにしてます。また複数文字列内に入ってくるデータはカンマ区切りとした場合にしてます。
フィールドコード
テーブル:table テーブル内の担当A,B:担当AB テーブル内の使用品:使用品
複数文字列のA:担当A 複数文字列のB:担当B
で設定した上でこのような形にしてみました。
(function () {
'use strict';
kintone.events.on([`app.record.edit.submit`, `app.record.create.submit`], function (event) {
let record = event.record
// 複数文字列に格納されているデータ(カンマ区切り)を配列として先に取り出す
let tanA = record["担当A"].value ? record["担当A"].value.split(",") : []
let tanB = record["担当B"].value ? record["担当B"].value.split(",") : []
// テーブルを変数として
let table = record["table"].value
// テーブル行分回す
table.forEach(row => {
let tantou = row.value["担当AB"].value
let value = row.value["使用品"].value
// 担当によって配列振り分けpush
switch (tantou) {
case "担当A":
tanA.push(`${value}`)
break;
case "担当B":
tanB.push(`${value}`)
break;
}
})
// 配列の重複データを削除
tanA = tanA.filter((value,index,self)=> self.indexOf(value) === index)
tanB = tanB.filter((value,index,self)=> self.indexOf(value) === index)
// 配列を結合し直して複数文字列へ
record["担当A"].value = tanA.join(",")
record["担当B"].value = tanB.join(",")
return event
});
})();
nabe さま
お礼が遅くなってしまいました。
前回に続き再びご丁寧にコードまで書いて頂きまして本当にありがとうございます。
他に方法がないか試行錯誤してみていましたが、やはりこの動作が必要でしたので助かりました。
理解不足な点が多く、forEachやアロー関数?など未だ見慣れない処理ばかりですがご指南頂いた内容、コメント等を熟読し、
お教えいただいたことを引き続き勉強しながら今後につなげたいと思います!
親切に教えて頂き心から感謝いたします!本当にありがとうございます;;