新規投稿
フォローする

関連レコードの情報の有無を取得したい

kintone歴 1か月になります。

質問させていただきます。

 

あるアプリのレコード内に関連レコードの情報を置いています。

関連レコードで取得できる情報が1件でもあった場合に、レコード一覧の特定のセルに色をつけるという処理を作りたいと思っています。

(この1件についてはレコードを登録、編集するときに取得して保存済みの情報とします)

 

色の付け方はチュートリアル

https://developer.cybozu.io/hc/ja/articles/202161864 

でわかりましたが、

 

関連レコードの情報の有無の取り方が分かりません。

kintone.events.on('app.record.index.show', function(event) {
 
});
 
 
とした場合event内に関連レコードの要素があると思っていましたが
見当たらず。
取得する方法はなにかないでしょうか?

イベントとしてはshow()の時に実施したいです。

 

 

お知恵をいただければと思います。よろしくお願いします。

0

2件のコメント

Avatar
江田篤史

tanaka-r様

お世話になっております。 cstapの江田と申します。

関連レコードのデータはrecords.jsonを使うなどして、自分で取得しなければなりません。 下記のようなコードで実装できるかと思います。 2ケ所フィールドコードを書くところがあるのでそこは変更してください。

(function() {
  "use strict";
  kintone.events.on([
    'app.record.index.show'
  ], function(event){
    RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){
      var relatedRecordsField = new RelatedRecordsFieldManager('関連レコードのフィールドコード');
      event.records.forEach(function(record, index){
        relatedRecordsField.getRecords(record).then(function(records){
          if(records.length){
            kintone.app.getFieldElements('色を塗るフィールドのフィールドコード')[index].style.background = '#f00';
          }
        });
      });
    });
  });
  var RelatedRecordsFieldManager = (function(fieldCode){
    function RelatedRecordsFieldManager(fieldCode) {
      this.fieldCode = fieldCode;
      this.targetAppId = kintone.app.getRelatedRecordsTargetAppId(fieldCode);
      this.property = this.fieldProperties[fieldCode].referenceTable;
    }
    RelatedRecordsFieldManager.prototype = {
      selfAppId: kintone.app.getId(),
      records: [],
      limit: 1,
      //limit: 500,
      offset: 0,
      getFieldProperties: function(){
        return kintone.api(kintone.api.url('/k/v1/app/form/fields', true), 'GET', {
          app: RelatedRecordsFieldManager.prototype.selfAppId,
        }).then(function(response){
          RelatedRecordsFieldManager.prototype.fieldProperties = response.properties;
        });
      },
      query: function(record){
        return (
          this.property.condition.relatedField +
          '="' +
          record[this.property.condition.field].value +
          (this.property.filterCond ? '" and ' : '"') +
          this.property.filterCond
        );
      },
      getRecords: function(record){
        var _this = this;
        return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
          app: this.targetAppId,
          query:
            this.query(record) +
            ' order by ' + this.property.sort +
            ' limit ' + this.limit +
            ' offset ' + this.offset
        }).then(function(response){
          return response.records;
          /*_this.records = _this.records.concat(response.records);
          _this.offset += response.records.length;
          if(response.records.length === _this.limit){
            return _this.getRecords(record);
          }else{
            return _this.records;
          }*/
        });
      }
    }
    return RelatedRecordsFieldManager;
  })();
})();
江田篤史により編集されました
0
Avatar
tanaka-r

江田篤史様

初めまして。返答が遅くなり申し訳ありません。

大変ご丁寧な回答をしていただきありがとうございます。

 

関連レコードは自分で取得するしかないのですね。

いただいたコードを参考に、実装を進めていってみます。!

内容も理解できるように、時間ととって読み込んでみます。

 

ありがとうございます。!

 

0
サインインしてコメントを残してください。