ES6の利用例

今回はES6(ECMAScript 6th edition)を利用したコーディング例を紹介します。

ES6は2015年に標準化されており、現在の対応状況はこちらのようになっております。
ここでは、以前Tipsに投稿された「一覧画面で条件に応じたレコード件数を取得するテクニック」のコードをES6に則って書き換えたいと思います。

利用したES6の特徴

作成したコード

(() => {
  "use strict";
  // 一覧ページ
  kintone.events.on('app.record.index.show', event => {
    // 現在の検索条件&処理中のレコード取得
    (new KintoneRecordManager).getProcessingRecords().then(response => {
      kintone.app.getHeaderMenuSpaceElement().innerHTML = `処理中のレコード件数: ${response.records.length}`;
    });
  });
})();
/**
 * kintone record manager
 */
class KintoneRecordManager {
  constructor(){
    this.records = [];
    this.appId = null;
    this.query = '';
    this.limit = 100;
    this.offset = 0;
  }
  // 現在の検索条件&処理中のレコード取得
  getProcessingRecords(){
    return new Promise(resolve => {
      this.appId = kintone.app.getId();
      this.query = `${kintone.app.getQueryCondition()} ${kintone.app.getQueryCondition() ? ' and ' : ''} ステータス = "処理中"`;
      this.getRecords().then(() => {
        resolve(this);
      });
    });
  }
  // レコード取得
  getRecords(){
    return kintone.api('/k/v1/records', 'GET', {
      app: this.appId,
      query: `${this.query} limit ${this.limit} offset ${this.offset}`
    }).then(response => {
      let len;
      Array.prototype.push.apply(this.records, response.records);
      len = response.records.length;
      this.offset += len;
      if (len < this.limit) {
        this.ready = true;
      } else {
        return this.getRecords();
      }
    });
  }
}

江田さん

ご紹介ありがとうございます。大変参考になります。

はやく IE が動作対象から外れて、ES6 を使えるようにしてほしいですね。

改善点としては、件数取得に全件読み込む必要が無く、totalCount パラメータ指定で良いと思います。

もとの「一覧画面で条件に応じたレコード件数を取得するテクニック」が投稿された時点では、まだtotalCount パラメータが無かったためだと思います。

rex0220様

お世話になっております。
なるほど!そのような指定ができるのですね!
勉強不足でした。
大変参考になります!ありがとうございます!