はじめに
指定した条件にあてはまるレコードをフォームに表示する「関連レコード一覧」ですが
関連するレコードの数を取得することができません。
そこで今回は、アプリ同士の連携で、関連レコードとして紐づけられている
レコードの数を表示させるためのTipsをご紹介します。
利用イメージ
例えば、顧客リストアプリと案件情報アプリで
顧客名で紐づけた関連レコードを利用している場合に
顧客リストアプリ内で関連した案件の数を把握したい場合に利用できます。
あるいは、レンタル品目一覧アプリとレンタル申請アプリを紐づけている際には
レンタル品目一覧アプリを確認することで、利用回数の多い備品を確認することなどが可能になります。
毎回、関連するアプリに移動し絞り込みやグラフの確認などをすることなく
関連レコードを設置したアプリからレコード数が確認できるようになるTipsです。
アプリの準備
まず、アプリストアにある営業支援パックを追加します。
今回のTipsでは、営業支援パック内の顧客管理(Aアプリ)と案件管理(Bアプリ)を使用します。
顧客管理(Aアプリ)
顧客管理(Aアプリ)の、下記のフィールドを使用します。
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
文字列(1行) | 顧客名 | 顧客名 |
関連レコードに表示するレコードの絞り込み用 |
関連レコード一覧 |
案件一覧 |
案件一覧 |
件数対象の関連レコード一覧 |
また、関連レコードの件数を表示するための、スペースフィールドを追加します。
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
スペース |
設定なし |
num |
関連レコードの件数を表示するためのスペース |
ついでに、スペースフィールドの近くにラベルを設置して
何を示している値なのかわかりやすくしておきましょう。
※この場合のラベル名は関連案件数としています。
案件管理(Bアプリ)
案件管理(Bアプリ)の、下記のフィールドを使用します。
フィールドタイプ | フィールド名 | フィールドコード | 備考 |
ルックアップ |
顧客名 |
顧客名 |
関連レコードに表示するレコードの絞り込み用 |
サンプルコード
ソースコードの説明
kintone-rest-api-clientで関連レコードで関連付けられたレコードを取得する
kintone-rest-api-clientは、 kintone REST API を JavaScriptで扱う際に必要な処理をまとめたライブラリです。getAllRecordsメソッドで全レコードを一括で取得できます。
このサンプルでは、関連レコードで紐づけているBアプリのレコードを全件取得しています。
詳しくは下記ページを参照ください。
関連レコード数の値をスペースフィールドに反映
上記kintone.api()で取得したオブジェクトの数をスペースフィールドに反映させます。
スペースフィールドの利用については、kintone API解説シリーズレコード詳細にもボタンを設置しようで
kintone.app.record.getSpaceElementについて詳しく解説しています。
今回はというフィールドコードで設置したスペースフィールドに
値を反映させますので、関連レコードの項目を条件付きで集計と同じように
関連レコードに合致するレコードの数を、フィールドの近くに設置しました。
※上記サンプルの場合は一度に表示する最大レコード数を5件に設定していますが
実際の案件情報アプリでの関連レコードは全部で6件登録されていることがわかりました。
関連レコードの絞り込み条件を増やした場合
関連レコードのフィールド設定で「さらに絞り込む条件」を設定することができます。
この設定を行った場合は、サンプルコード上で件数カウントをするためのクエリにも条件を追加してください。
デモ環境
デモ環境で実際に動作を確認できます。
https://dev-demo.cybozu.com/k/285/
ログイン情報はcybozu developer network デモ環境で確認してください。
おわりに
アプリ同士の連携を図る関連レコード一覧は標準機能で利用できるため
kintoneを活用するには欠かせない機能となっています。
さらに、今回のTipsでご紹介したカスタマイズを加えることで
より便利になると思いますので、お使いのkintoneアプリ用にアレンジを加えて
チーム内での情報活用にお役立てください。
このTipsは、2022年11月版で確認したものになります。
上記サンプルを試してみたところ、関連案件数ではなく、Bアプリの全レコード件数が表示されてしまいました。
どのような要因が考えられますでしょうか?ご教示いただけますと幸いです。
長田 英里 様
返答が遅くなり申し訳ございません。
サンプルコードでは、ご指摘の通り関連案件数ではなく全レコード件数を取得するものになっていました。
大変失礼いたしました。
サンプルコードと記事の内容を修正しました。
デモ環境もご用意しましたのでご活用ください。
お忙しいところ、ご対応くださりありがとうございます!
是非試してみたいと思います。
取り急ぎお礼まで。
担当者様
下記のようなエラーが表示されたのですが原因がわかりますでしょうか。
たけまつ 様
お世話になっております。cybozu developer network 運営事務局でございます。
こちらのコメント欄は記事内容のフィードバック目的となっており、
直接的に記事と関連がない、または技術的なご質問はcybozu developer コミュニティをご活用ください。
有志により回答が得られる場所となります。
よろしくお願い致します。
こちらのサンプルをスペースフィールドではなく文字列フィールドへ件数を反映させるにはどのようにしたら宜しいでしょうか。
ご教示頂けると幸いです。
Okabe 様
お世話になっております。cybozu developer network 運営事務局でございます。
サンプルコードの39-44行目でスペースフィールドに表示する要素を作成し、
スペースフィールドの要素に追加するという処理をしているので、この部分の書き換えが必要となります。
また、この記事のサンプルコードで使用しているイベント(app.record.detail.show)では、
eventオブジェクトの書き換え(文字列フィールドへ件数を反映させること)が出来ないため、
レコード追加画面の保存実行前イベント(app.record.create.submit)などの他のイベントで書き換える必要があります。
お手数ですが、質問が記事のシナリオと異なる場合、コミュニティをご活用ください。
https://developer.cybozu.io/hc/ja/community/topics
よろしくお願い申し上げます。
運営事務局様
ご回答いただきありがとうございます。
こちらのイベントでは無理なのですね、頂いた参考も含め勉強いたします。
ありがとうございます。
山本理一様
お世話になっております。cybozu developer network 運営事務局でございます。
こちらのコメント欄は記事内容のフィードバック目的となっており、
直接的に記事と関連がない、または技術的なご質問はcybozu developer コミュニティをご活用ください。
有志により回答が得られる場所となります。
よろしくお願い致します。
”さらに絞り込み条件”に下記のように指定日付を設定したいですが、
件数カウントをするためのクエリをサンプルコードのどこに追加すればいいでしょうか?
ご教示いただけますと幸いです。
Cora 様
お世話になっております。cybozu developer network 運営でございます。
こちらのコメント欄は記事内容のフィードバック目的となっているため、
記事から派生した技術的なご質問はcybozu developer コミュニティをご活用ください。
よろしくお願い致します。
cybozu Development team
お世話になっております。
関連レコードについての質問です。
案件管理に活動管理レコードは参照出来ています。
日報アプリにも、当日の活動管理レコードを表示したいと思っています。
案件管理に表示されている設定と同様にしておりますが、なぜか反映しません。
こちらの設定方法をご教示頂けますでしょうか?
案件管理レコード(紐づけよう)と顧客管理レコード(紐づけ用)は設定しております。
上村 祐介 様
お世話になっております。cybozu developer network 運営でございます。
恐れ入りますが、こちらのコメント欄は記事内容のフィードバック目的となっているため、
記事から派生した技術的なご質問などはcybozu developer コミュニティをご活用ください。
よろしくお願い致します。
こちら紐づく顧客数が上限値は500か100という前提で間違いないですか?
Koji Miya様
お世話になっております。cybozu developer network 運営でございます。
ご質問ありがとうございます。
kintone-rest-api-clientについて詳しくは、下記ページを参照ください。
よろしくお願いいたします。
こんにちは。
スペースフィールドの箇所の「フィールドコード」は「要素ID」のことでしょうか?