# 【kintone】AアプリからBアプリへの関連レコード反映で反映できなかったものの抽出

**URL:** <https://community.cybozu.dev/t/topic/4968>\
**Category:** kintone 開発相談\
**Created:** [2020 年 3 月 11 日午前 2:38 UTC](https://community.cybozu.dev/t/topic/4968 "2020-03-11T02:38:29Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1238](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1238](https://community.cybozu.dev/u/Legacy_Account1238)\
**Post date:** [2020 年 3 月 11 日午前 2:38 UTC](https://community.cybozu.dev/t/topic/4968/1 "2020-03-11T02:38:29Z")

</div>

表題のままですが、

AアプリからBアプリへ関連レコード一覧でBアプリにAアプリの内容を表示している状態

①AアプリにCSVファイルをインポート

②Bアプリに反映しなかった（紐づけているデータがBアプリにない）Aアプリ内のレコードを抽出

上記はkintone内で設定可能でしょうか。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2020 年 3 月 12 日午前 4:42 UTC](https://community.cybozu.dev/t/topic/4968/2 "2020-03-12T04:42:14Z")

</div>

山下祐樹様

お世話になっております．  
トヨクモの江田と申します．

JavaScript等で処理するのが良いと思います．

1. Bアプリの各レコードについて，kintone REST APIで関連レコードを取得する．
2. 1の取得結果から，関連レコードに使われているAアプリのレコードをリスト化する．
3. kintone REST APIでAアプリのレコードを全件取得する．
4. 2と3から関連レコードに使われていないAアプリのレコードを抽出する．  
といった流れになるかと思います．

kintone REST APIでのレコードの取得方法については下記などをご覧ください．  
[https://developer.cybozu.io/hc/ja/articles/201941754](https://developer.cybozu.io/hc/ja/articles/201941754)  
[https://developer.cybozu.io/hc/ja/articles/202331474#step2](https://developer.cybozu.io/hc/ja/articles/202331474#step2)

また，関連レコードの取得についてはナレッジノートでご紹介しているので，よろしければご覧ください．  
[https://developer.cybozu.io/hc/ja/community/posts/360017851006](https://developer.cybozu.io/hc/ja/community/posts/360017851006)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1238](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1238](https://community.cybozu.dev/u/Legacy_Account1238)\
**Post date:** [2020 年 3 月 30 日午前 7:45 UTC](https://community.cybozu.dev/t/topic/4968/3 "2020-03-30T07:45:48Z")

</div>

江田 様

ご回答ありがとうございます。

お返事が遅くなりまして申し訳ございません。

色々と頂いた情報で自分なりに調べてみたのですが、恐縮ながら上手く設定ができません・・。

もしよろしければ、詳細の手順をご教授頂くことは難しいでしょうか？

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

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1238](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1238](https://community.cybozu.dev/u/Legacy_Account1238)\
**Post date:** [2020 年 3 月 30 日午前 7:49 UTC](https://community.cybozu.dev/t/topic/4968/4 "2020-03-30T07:49:37Z")

</div>

連投ですみません。

ちなみにですが、一覧表示にて、Aアプリで、Bアプリに紐づけている情報がないレコードのみを表示する方法などはありますでしょうか？

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2020 年 4 月 8 日午前 8:52 UTC](https://community.cybozu.dev/t/topic/4968/5 "2020-04-08T08:52:41Z")

</div>

山下祐樹様

お世話になっております。  
返信遅くなりました。

下記JSで、「filteredRecord」にBアプリに反映しなかったAアプリ内のレコードが抽出されます。([こちら](https://community.cybozu.dev/hc/ja/articles/207613916)などを参考にコンソール画面を確認してください)  
アプリAで、[こちら](https://community.cybozu.dev/hc/ja/community/posts/360017851006)の「RelatedRecordsFieldManager.js」を読み込み後、下記JSを読み込んでください。  
あとはカスタマイズビューなどで、「filteredRecord」をDOMに書き出せば表示できます。

```
(function() {
  "use strict";
  var getRecords = function(app, tmpRecords){
    var limit = 500;
    var tmpRecords = tmpRecords || [];
    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
      app: app,
      query: 'limit ' + limit +' offset ' + tmpRecords.length
    }).then(function(response){
      tmpRecords = tmpRecords.concat(response.records);
      return response.records.length === limit ? getRecords(app, tmpRecords) : tmpRecords;
    });
  };
  kintone.events.on([
    'app.record.index.show',
  ], function(event){
    var referencingApp = **** ; //アプリBのID
    var relatedRecordsField = ' ****'; //関連レコードのフィールドコード
    RelatedRecordsFieldManager.prototype.selfAppId = referencingApp;
    kintone.Promise.all([
      getRecords(kintone.app.getId()),
      kintone.Promise.all([
        RelatedRecordsFieldManager.prototype.getFieldProperties(),
        getRecords(referencingApp),
      ]).then(function(responses){
        return kintone.Promise.all(responses[1].map(function(referencingAppRecord){
          return (new RelatedRecordsFieldManager(relatedRecordsField)).getRecords(referencingAppRecord);
        }));
      })
    ]).then(function(responses){
      var relatedRecordIds = [].concat.apply([], responses[1].map(function(relatedRecords){
        return relatedRecords.map(function(relatedRecord){
          return relatedRecord.$id.value;
        });
      }));
      var filteredRecord = responses[0].filter(function(record){
        return relatedRecordIds.indexOf(record.$id.value) === -1;
      });
      console.log(filteredRecord);
    });
  });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1238](https://avatars.discourse-cdn.com/v4/letter/l/85f322/32.png) [@Legacy\_Account1238](https://community.cybozu.dev/u/Legacy_Account1238)\
**Post date:** [2020 年 4 月 9 日午前 9:11 UTC](https://community.cybozu.dev/t/topic/4968/6 "2020-04-09T09:11:20Z")

</div>

江田 様

ご回答ありがとうございます。

いただいた情報で試してみます。

丁寧なご対応ありがとうございました。
