kintone.events.on関数のeventオブジェクトについて

背景・実現したいこと

あるフィールドに入っているすべての数字を比較し、+1した値を取得したいです。

例えば3つレコードが登録されているアプリに「機器コード」といったフィールドがあったとして

レコード1.機器コード = 1000

レコード2.機器コード = 1001

レコード3.機器コード = 1002

とあったら、1003を取得したいです。

これで取得した値で、レコードを追加する際の機器コードを自動入力したいです。

なお、値さえ取得できれば自動入力の部分はサンプルプラグイン「自動採番プラグイン」があったので、そちらを参考にして作成できそうです。

やり方の方向性

kintone.events.on関数のeventオブジェクト内recordプロパティで取得できないかと思っております。

ただし、イベントタイプが「app.record.index.show」だと、表示されている分しか取得できないため、入っているレコードすべてを取得可能なイベントタイプがあれば可能かなと考えております。

それが取得できれば、

var record = event.record;

var test = record['機器コード']['value'];

var tmp= test[0];

//全てのレコードの「機器コード」フィールドの値を比較して、一番高い物に+1した値を変数「tmp」に入れる。
for( i = 0 ; i > test.length ; i++ ) {

 if(test[i] > tmp) {

  tmp = test[i];

 };

 tmp = tmp+1;

};

 のような形で取得できると考えております。

※動作確認していない、大体で書いたコードなので間違っている可能性大です・・・

意味わからなかったら申し訳ありません・・・

レコードすべての値を取得できる、kintone.events.on関数のイベントタイプは、あったりしますでしょうか?

 

以上になります。

やり始めたばかりの為、拙い説明で申し訳ありませんが、ご回答頂けると幸いです。

よろしくお願い致します。

 

一條 智樹さん

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

一覧画面で表示されている以外のレコードを取得する場合は、kintone REST APIを用いると良いです。
https://developer.cybozu.io/hc/ja/articles/203727120
https://developer.cybozu.io/hc/ja/articles/202331474

取得件数が多い場合は少し工夫が必要です。
100件までであれば普通にリクエスト
101~500件であればlimitを指定してリクエスト
501~10000件であれば複数回に分けてリクエスト(https://developer.cybozu.io/hc/ja/articles/203702800)
10001件以上であればカーソルAPIを利用(https://developer.cybozu.io/hc/ja/articles/360029152012)

rest-api-clientというライブラリを用いれば、あまり件数を気にせずに取得することもできます。
https://developer.cybozu.io/hc/ja/articles/900000767263
https://github.com/kintone/js-sdk/blob/master/packages/rest-api-client/docs/record.md#getAllRecordsWithCursor

江田 篤史 様

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

ご回答いただき、ありがとうございました。

rest-api-clientを使用することで、下記のコードにて一覧画面の表示件数にかかわらず任意のレコードを取得することができました!

(function() {
'use strict';
kintone.events.on('app.record.create.show', function(event) {

// クライアントの作成
var client = new KintoneRestAPIClient();

// リクエストパラメータの設定
var APP_ID = kintone.app.getId();
var RECORD_ID = 1; //取得したいレコードの番号を入れる。
var params = {
app: APP_ID,
id: RECORD_ID
};

// レコード取得の関数定義
function getRestRecord(x) {
client.record.getRecord(x).then(function(resp) {
var RestRecord = resp.record['機器コード']['value'];
console.log(Number(RestRecord));
}).catch(function(err) {
console.log(err);
});
}

getRestRecord(params);
});
})();

とても助かりました。

ありがとうございました。