kintone歴 1か月になります。
質問させていただきます。
あるアプリのレコード内に関連レコードの情報を置いています。
関連レコードで取得できる情報が1件でもあった場合に、レコード一覧の特定のセルに色をつけるという処理を作りたいと思っています。
(この1件についてはレコードを登録、編集するときに取得して保存済みの情報とします)
色の付け方はチュートリアル
https://developer.cybozu.io/hc/ja/articles/202161864
でわかりましたが、
関連レコードの情報の有無の取り方が分かりません。
kintone.events.on(‘app.record.index.show’, function(event) {
});
とした場合event内に関連レコードの要素があると思っていましたが
見当たらず。
取得する方法はなにかないでしょうか?
イベントとしてはshow()の時に実施したいです。
お知恵をいただければと思います。よろしくお願いします。
tanaka-r様
お世話になっております。 cstapの江田と申します。
関連レコードのデータはrecords.jsonを使うなどして、自分で取得しなければなりません。 下記のようなコードで実装できるかと思います。 2ケ所フィールドコードを書くところがあるのでそこは変更してください。
(function(){"use strict";kintone.events.on(['app.record.index.show'],function(event){RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){varrelatedRecordsField=newRelatedRecordsFieldManager('関連レコードのフィールドコード');event.records.forEach(function(record,index){relatedRecordsField.getRecords(record).then(function(records){if(records.length){kintone.app.getFieldElements('色を塗るフィールドのフィールドコード')[index].style.background='#f00';}});});});});varRelatedRecordsFieldManager=(function(fieldCode){functionRelatedRecordsFieldManager(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(){returnkintone.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;returnkintone.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){returnresponse.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; }\*/});}}returnRelatedRecordsFieldManager;})();})();
江田篤史様
初めまして。返答が遅くなり申し訳ありません。
大変ご丁寧な回答をしていただきありがとうございます。
関連レコードは自分で取得するしかないのですね。
いただいたコードを参考に、実装を進めていってみます。!
内容も理解できるように、時間ととって読み込んでみます。
ありがとうございます。!