kintoneAPIでレコード一括取得の仕様の確認(別タブ利用時)

一覧表示後に、ボタンをクリックすると、アプリ内のレコードを取得というようなものを作成しました。

以下の手順の場合、kintoneの仕様なのか、取得データが欲しいデータとは異なりました。

何かご存じの方いらっしゃいましたら、教えて頂けると助かります。

この投稿を見てくださって有難うございます。

 

【手順】

1.一覧を開く

2.一覧のレコードを別タブで開き、編集して保存

3.別タブで開いている一覧に戻り、レコード取得ボタンをクリック

 

【上記手順で期待するデータ】

変更後の2のデータを反映した全データ

 

【質問】

この3の際に取得してくるレコードですが、2で変更したレコードは反映されないものなのでしょうか?アプリを開いた際に表示しているデータしか取得できないのでしょうか?

 

kintone.events.on("app.record.index.show", function (event) {
  // データ作成ボタン押下
    $("#report_data_creation_btn").on("click", function (e) {    

  let all_records = [];

  // データ取得
  new Promise((resolve) => {
      var manager = new KintoneRecordManager();
        manager.getRecords(function (records) {

          // レコード取得後の処理
          if (records.length) {
              records.forEach((record, i) => {
                  all_records.push(record);
                  if (i === records.length-1) {
                   resolve();
                  }
              });
          } else {
              resolve();
          }
        });

    }).then(() => {
        console.log('解決');
  });

/**
* kintoneデータ一括取得
 */

var KintoneRecordManager = (function () {
  KintoneRecordManager.prototype.records = []; // 取得したレコード

KintoneRecordManager.prototype.appId = null; // アプリID
KintoneRecordManager.prototype.query = ""; // 検索クエリ
KintoneRecordManager.prototype.limit = 500; // 一回あたりの最大取得件数
KintoneRecordManager.prototype.offset = 0; // オフセット

function KintoneRecordManager() {
  this.appId = kintone.app.getId();
  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;
})();

 

REST APIを用いてますので、どのタブや環境で実行しようとも、その時点の最新のものがとれるのが正しいとは思います。

どちらかというと
取得後の処理を見ていると、間違って過去のデータもっちゃってることもありえそうですね。

気になるようでしたら、APIから戻ってくるデータのみをまず一旦確認していいかと思います。

村濱一樹さん、コメントありがとうございます!

 

REST APIを用いてますので、どのタブや環境で実行しようとも、その時点の最新のものがとれるのが正しいとは思います。

REST APIはどの環境でも最新のものが取得できるのですね。

あまりそのような事を知らなかった為、教えて頂き、取得自体は問題なくできているのだと知り安心しました!

 

取得後の処理を見ていると、間違って過去のデータもっちゃってることもありえそうですね。

取得後の処理でログを残して確認して見ます。

 

ご丁寧にご回答くださりありがとうございました!

大変助かりました。