はじめに
お客さんの既存マスタが半角英数字(スペースとか入っていたり)を含むデータで、kintone標準機能のルックアップだと検索にヒットしないやん!
という方いらっしゃいませんか?
検索したいデータがヒットしません
「お客様、大変申し訳ございませんがこれはkintoneの仕様です。」
「毎度完全一致する文字列(まぁまぁ長い文字列)を指定して運用回避いただけないでしょうか?」
なんて言えないのがシステム屋です。
プラグインとか無いの?
プラグインも探したのですが、APIの10,000件問題が本当に考慮されているか疑わしかったり、
マスタデータが数万レコードに及びため、APIコール数上限に簡単に引っかかるような実装仕様になっていないか不安と思う部分がありコスト掛けて購入するメリットを見いだせず。
1日に実行できるAPIリクエスト数
どうしよう
ググっているとこちらの記事にたどり着きました。
ここまで揃っている参考コードがあるなら行けそう!
業務要件として
- あいまい検索できること
システム要件(制約)としては
- APIコール上限を考慮すること
この2点を追加実装することにしました。
(この場をお借りして御礼申し上げますmm まじで助かりました!)
困っている人がきっと他にいると思い共有します!
ぜひお客様の業務を軽くしてあげましょう!
kintoneの設定
以下のアプリを作成します。
顧客マスタアプリ
フィールド名 | フィールドコード | データ型 |
---|---|---|
会社名 | 会社名 | 文字列 |
担当者名 | 担当者名 | 文字列 |
案件管理アプリ
フィールド名 | フィールドコード | データ型 | 備考 |
---|---|---|---|
案件タイトル | 案件タイトル | 文字列 | |
顧客会社名 | 顧客会社名 | 文字列 | |
顧客担当者名 | 顧客担当者名 | 文字列 | |
要素ID:lookUpButton | スペース | [取得]リンクを配置するエリア | |
顧客マスタレコード番号 | 顧客マスタレコード番号 | 文字列 | ルックアップみたいに詳細画面でリンク表示するためのルックアップ先のレコード番号を保持しておくフィールド |
想定シーンとしては、
案件情報を作成する際に顧客マスタから先方担当者を設定する操作でルックアップを使う、です。
実装内容
ルックアップ取得先が数万レコードに及ぶことから検索中にスピナー表示(spin.js)を追加しました。
あと検索結果が数100件とか出てきても困るので(ノートパソコンで業務してたらかなり辛い)、modal上で絞り込みできるようにしました。
コード長いのでこちらをご参照ください。
https://github.com/koguren/kintoneJSSample