閲覧ありがとうございます。
別アプリからKintoneRecordManagerで取得したレコードを用いて、
数値を計算、自アプリのフィールドを変更するといった処理を作成したく、以下のコードを記載したのですが、フィールド値が更新されません…
・太字の箇所が処理されない。
・Consoleにはエラーなし、各引数は希望の値を取得できている状況
当方JavaSciprt初心者のため、
コードの記載に問題があるのか、フィールドの記載方法に問題があるのか、ご教示いただきたく存じます。
※またコードの記述方法でアドバイス等があれば、合わせていただきたいです。
以上、よろしくお願いします。
//////////以下コード//////////
let cA=0;
let cW=0;
let cS=0;
let cADone=0;
let cWDone=0;
let cSDone=0;
(function() {
'use strict';
kintone.events.on('app.record.index.show', function(event) {
let events=event;
//KintoneRecordManager(レコード取得クラス)のインスタンス化
let manager = new KintoneRecordManager();
manager.getRecords(function(records) {
totalTask(records);
event = getAchievement(events,records);
});
return event;
});
})();
function totalTask(records){
//レコードの集計
for (let i = 0; i < records.length; i++) {
let record = records[i];
switch (record.区分.value) {
case "A":
cA += 1;
if (record.完了.value == "完了") {
cADone += 1;
}
break;
case "W":
cW += 1;
if (record.完了.value == "完了") {
cWDone += 1;
}
break;
case "S":
cS += 1;
if (record.完了.value == "完了") {
cSDone += 1;
}
break;
}
}
console.log("cADone" +cADone);
console.log("cA" +cA);
}
function getAchievement(event,records){
//取得した値から達成度を計算
let aLevel=cADone/cA;
let wLevel=cWDone/cW;
let sLevel=cSDone/cS;
console.log("cADone"+cADone);
console.log("cDone"+cDone);
console.log("cSDone"+cSDone);
console.log("c"+cA);
console.log("cW"+cW);
console.log("cS"+cS);
console.log("aLevel"+aLevel);
console.log("wLevel"+wLevel);
console.log("sLevel"+sLevel);
//値の格納
for(let i=0; i<event.records.length; i++){
let record=event.records[i];
switch(record.項目.value){
case "A":
console.log("switch-A");
** record.達成度.value = aLevel;**
break;
case "W":
console.log("switch-W");
** record.達成度.value=wLevel;**
break;
case "S":
console.log("switch-S");
** record.達成度.value=sLevel;**
break;
default:
break;
}
}
return event;
}
/**
* kintoneと通信を行うクラス
*/
var KintoneRecordManager = (function() {
KintoneRecordManager.prototype.records = []; // 取得したレコード
KintoneRecordManager.prototype.appId = null; // アプリID
KintoneRecordManager.prototype.query = ''; // 検索クエリ
KintoneRecordManager.prototype.limit = 100; // 一回あたりの最大取得件数
KintoneRecordManager.prototype.offset = 0; // オフセット
function KintoneRecordManager() {
this.appId = "9";
this.records = [];
}
// すべてのレコード取得する
KintoneRecordManager.prototype.getRecords = function(callback) {
kintone.api(
kintone.api.url('/k/v1/records', true),
'GET',
{
app: this.appId,
query: this.query + (' limit ' + this.limit + ' offset ' + this.offset)
},
(function(_this) {
return function(res) {
var len;
Array.prototype.push.apply(_this.records, res.records);
len = res.records.length;
_this.offset += len;
if (len < _this.limit) { // まだレコードがあるか?
_this.ready = true;
if (callback !== null) {
callback(_this.records); // レコード取得後のcallback
}
} else {
_this.getRecords(callback); // 自分自身をコール
}
};
})(this)
);
};
return KintoneRecordManager;
})();