アプリ内のレコードで、ある条件において重複データがあり、それらを抽出・編集・削除できないか試行錯誤しております。
例)項目「会社名」で重複しているレコードを抽出する
レコード1 会社名:A株式会社 管理番号:001
レコード2 会社名:B株式会社 管理番号:002
レコード3 会社名:A株式会社 管理番号:003
レコード1とレコード3は重複している
「会社名」の項目設定を「重複禁止」にすることは出来ません。
しかし定期的に「会社名」が重複しているレコードを抽出して、変更や削除の処理を行なう必要があります。
このような処理に際して、API等手段はなんでも良いので、実現することはできませんでしょうか。
どなたかお知恵を拝借できますよう、お願いいたします。
標準機能の「集計する」でグラフの種類を「表」にして会社名の件数を集計してカウントが多い方から並び替えるというのはどうでしょうか?
これだと、定期的にその集計を見るだけで重複があるかがわかると思います。
(例にある、レコード1と3が重複というのは、レコード3はC株式会社ですか?)
>>安藤様
アイデアのご提示をいただき、ありがとうございます。
グラフ機能から件数で判断するという発想はありませんでしたので、大変参考になりました。
確かに定期的にチェックすれば重複レコードが判断できそうです。
kintoneの標準機能を活用する点でも、カスタマイズの必要が無く、簡単ですね。
なお、このアプリのレコード数が数万件にもおよぶ想定のため、グラフを作成する際に、さらにいくつか条件指定を追加するなど、工夫が必要になりそうです。
ちなみに、APIを用いてこのグラフのような抽出結果を得る方法、などご存知ではないでしょうか。
そのような方法があれば、より的確な抽出ができそうですが…
最後に、ご指摘の通り、私の例示が間違っていたので、修正いたしました。
レコード1と3の会社名が同じである、という例示でございます。
kintoneのAPIは500件ずつしかデータを取得できないので、数万件だと結構大変そうですね・・・
重複チェック対象のアプリのデータは、kintoneからだけ追加・更新される想定ですか?それともエクセルやCSVなどから一括取り込みもありえますか?
もし、kintoneからだけであれば、submit.successのイベントで別のアプリに書き込むことで確認できそうかなと思いました。
-
重複チェック用アプリを作成(会社名を重複を禁止にしておく)
-
submit.successイベントで重複チェック用アプリに書き込みする
-> 成功したら重複してない
-
手順2. で書き込みに失敗した場合、元のアプリで追加・更新しようとしているレコードの「重複あり」フィールドを更新
-
重複ありフィールドで絞り込みする
ちなみに、書かれている処理を正面から実現する便利なAPIは無いような気がする、というのが私の意見です。
>>安藤様
ご丁寧な解説、ありがとうございました。
別のアプリへフラグ的に書き込んでいく手法、大変勉強になりました。
正面から実現する手法はないということですので、ご提案いただいた内容を参考に、検討してみようと思います。
大変助かりました。
正面から行く場合はこうなると思います。
- APIで全件レコードを取得
- JavaScriptで重複をチェック
- 結果をどこかに出力する
上記の処理をするボタンを、一覧のヘッダエリアに追加する、などの方法かと思われます。
なんとなくモヤモヤしていたのですが、もっとシンプルにできそうです。
- submit イベントで重複条件に該当するデータを取得する
https://developer.cybozu.io/hc/ja/articles/202331474-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%8F%96%E5%BE%97-GET-#step2
-
件数が0件だったら重複なし
-
件数が1件以上だったら、自レコードと重複レコードに「重複あり」フラグを更新
自レコードはevent.recordに設定、重複レコード側はAPIで更新(Promise利用)
>>安藤様
具体的な手法について、ご検討いただきありがとうございます。
当初、検討していた方法も、ご提示いただいたものに近い内容でした。
しかし、アプリへのレコード登録自体をAPIで行なっており、submitイベントが活用できず断念…
(一度に複数件、登録する中に重複がある)
上記のような理由から、グラフチェックでの対処が一番スマートそうです。
定期的なチェックには、バッチ処理やRPAの利用も絡めて検討してみようと思います。
system
(system)
クローズされました:
10
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。