表題のままですが、
AアプリからBアプリへ関連レコード一覧でBアプリにAアプリの内容を表示している状態
①AアプリにCSVファイルをインポート
②Bアプリに反映しなかった(紐づけているデータがBアプリにない)Aアプリ内のレコードを抽出
上記はkintone内で設定可能でしょうか。
表題のままですが、
AアプリからBアプリへ関連レコード一覧でBアプリにAアプリの内容を表示している状態
①AアプリにCSVファイルをインポート
②Bアプリに反映しなかった(紐づけているデータがBアプリにない)Aアプリ内のレコードを抽出
上記はkintone内で設定可能でしょうか。
山下祐樹様
お世話になっております.
トヨクモの江田と申します.
JavaScript等で処理するのが良いと思います.
kintone REST APIでのレコードの取得方法については下記などをご覧ください.
https://developer.cybozu.io/hc/ja/articles/201941754
https://developer.cybozu.io/hc/ja/articles/202331474#step2
また,関連レコードの取得についてはナレッジノートでご紹介しているので,よろしければご覧ください.
https://developer.cybozu.io/hc/ja/community/posts/360017851006
江田 様
ご回答ありがとうございます。
お返事が遅くなりまして申し訳ございません。
色々と頂いた情報で自分なりに調べてみたのですが、恐縮ながら上手く設定ができません・・。
もしよろしければ、詳細の手順をご教授頂くことは難しいでしょうか?
よろしくお願い致します。
連投ですみません。
ちなみにですが、一覧表示にて、Aアプリで、Bアプリに紐づけている情報がないレコードのみを表示する方法などはありますでしょうか?
山下祐樹様
お世話になっております。
返信遅くなりました。
下記JSで、「filteredRecord」にBアプリに反映しなかったAアプリ内のレコードが抽出されます。(こちらなどを参考にコンソール画面を確認してください)
アプリAで、こちらの「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);
});
});
})();
江田 様
ご回答ありがとうございます。
いただいた情報で試してみます。
丁寧なご対応ありがとうございました。