一覧にある最大値

皆様

お世話になります。

現在すでに一覧にある中から最大値をとってくるようなプログラムを組もうとしているのですがうまく動作していません。

元々一覧にはPV_Numberと金額の2列しかないのですが、面倒なのがPV_Numberの書式です。

 

PV_Number 金額

201911-AAA-001 1000

2019-11-AAA-002              2000

201911-BBB-001               500

201911-AAA-003               1000

201911-CCC-001               200

 

のように年月、3文字の特定の文字列、そこから通し番号という形式になっています。

今行いたいのが例えばフォームからCCCという文字列とそれに対する金額を入力したら保存時に自動的にPV_Number 201911-CCC-002 (001の次の番号)が割り振られるようにしたく、また上に無いDDDなど新しい3文字の文字列と金額を入力した場合は201911-DDD-001のようにDDDに対する最初の通し番号が割り振られるようにしたいと思っています。

 

今存在するものをqueryで検索すればいいという回答を見つけて似たようなものを作成してみたものが以下です。

tempIDには"201911-DDD"や"201911-AAA"が渡されるようになっています。ただ実際に以下を回すと201911-DDD-Undefinedなどが返されてしまっており全く機能していない状態です。

function countExistingRecord(tempID){
var parms ={
'app': kintone.app.getId(),
'query': 'PV_Number like "' + tempID + '"order by PV_Number desc limit 1 offset 0',
'fields': 'PV_Number'
};

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

if(resp.records.length === 0){
return "001";
}else{

return resp.records.slice(-3);

}//end of if
}//end of function(resp)
); //end of API
}

もしもどこか誤っているところがありましたらご教示くださいますと幸甚に存じます。

 

よろしくお願い申し上げます。

あやしそうなところは、

return resp.records.slice(-3);

が、

return resp.records[0][‘PV_Number’].value.slice(-3);

とかですかね。

PV様

コメントくださいましてありがとうございます。そのように変更したのですが、やはり001などの数字(文字列)ではなく

201911-AAA-undefinedと値が返ってきてしまうようです。

Dnaka様

 

kintone.api...

return kintone.api...

にしたらどうなりますか?

TK様

ご回答くださいましてありがとうございます。

実はこの後すぐにRPAを導入し実現することとなりアプリ自体は削除となってしまいました。

せっかくアドバイスをくださったのに申し訳ありません。