お世話になります。
JavaScriptを用いて、あるアプリに入っている売上データのうち、
社名も部署名も一致するものは(部署名が空白でも)
同じデータとしてカウントアップしていき、最終的なレコード数を
実質の稼働数として、他のアプリの数値フィールドに格納したいと考え、
以下のようなプログラムを書きました。
//稼働社数のプログラム
(function() {
“use strict”;
//レコードの編集画面で適用する
var events = ['app.record.edit.show']
kintone.events.on(events, function(event) {
var record = event.record;
var client_rank = record['(フィールド名)']['value'];
var kadounum = 0;
var records = new Array();
if(client_rank == "(フラグ名)"){
var query ='ドロップダウン_2 in ("(条件)")'+
' and ドロップダウン_5 not in ("(条件)")' + ' and 月 in ("10月","11月","12月")';
}else{
query ='(フィールド名)="' + client_rank +
'" and ドロップダウン_5 not in ("(条件)")' + ' and 月 in ("10月","11月","12月")' ;
}
// 非同期リクエストを行う
kintone.api('/k/v1/records','GET',{"app":38,"query":query},function(resp_data){
for(var i = 0; resp_data.records.length > i; i++){
records.push(resp_data.records[i]);
}
if(records.length == 0){
kadounum = 0;
}else{
for(var j =0; records.length > j; j++){
var kaburi = false;
var newsyamei = records[j]['文字列__1行_']['value'];
var newbusyomei = records[j]['文字列 __1行__ 0']['value'];
if(j == 0){
kadounum = kadounum+1;
}else{
for(var k =0; k<j;k++){
var compares = records[k]['文字列__1行_']['value'];
if(compares != newsyamei){
continue;
}else{
var compareb = records[k]['文字列 __1行__ 0']['value'];
if(compareb){ compareb = compareb;}else{compareb = "空白";}
if(newbusyomei){
newbusyomei = newbusyomei;
}else{newbusyomei = "空白";}
if(compareb != newbusyomei){
continue;}else{
kaburi = true;
}
}
}
if(kaburi == false){
kadounum = kadounum+1;
}else if(kaburi == true){
kadounum = kadounum;
}
}
}
}
record['稼働社数']['value'] = kadounum;
});
return event;
});
})();
このように書いて実装したところ、稼働社数にズレが生じてしまいました。さらに、returnが効かず、値がフィールドに入力されませんでした。
やり方としては、「for文で関連レコードをひとつずつ見ながら、さらにfor文を用いてその上にある関連レコードと値を比較して、社名も部署名も一致する場合、数は数えず、そうでなければ1を足す。」というプログラムになります。
なにか問題点や、よりスマートな方法をご存知であればお教えいただきたいと存じます。
よろしくお願いいたします。