kintoneのテーブルで絞り込むと余計な行まで出てくる理由と、設計での回避

約5分で読めます

目次

  1. 絞り込みは効く。ただし単位はレコード
  2. 「使えない」のではなく「単位が違う」
  3. 標準機能でできる対処
  4. 1. そもそもテーブルをやめて、1行1レコードにする
  5. 2. 集計したい値だけ、テーブルの外に出しておく
  6. 3. 関連レコード一覧で見せる
  7. テキストの値を外に出したいとき
  8. まとめ

受注アプリのテーブルに明細を入れて運用していると、こういう場面が来ます。「商品Aを含む注文だけ見たい」。絞り込みを設定すると、たしかにレコードは絞られます。ところが開いてみると、商品B も C も混ざったテーブルがそのまま表示される。欲しかったのは商品Aの行だけなのに。

設定ミスではありません。kintoneの絞り込みは、テーブルに対しても動きますが、効く単位が「行」ではなく「レコード」だからです。この記事では、その仕組みと、集計・抽出をしたいときにどう設計すればよいかを整理します。

絞り込みは効く。ただし単位はレコード

サイボウズのアップデート情報には、こう書かれています。

テーブル内のフィールドを絞り込み条件に指定した場合、そのテーブル内に絞り込み条件を満たす行が1行以上存在するレコードが、絞り込み結果に表示されます。

つまり「条件に合う行が1行でもあれば、そのレコードが対象になる」という動きです。レコードが対象になる以上、表示されるのはテーブル全体です。条件に合わない行も一緒についてきます。

条件に合う行が1行でもあれば、そのレコードが結果に入る。表示されるのはテーブル全体で、合わない行も残る。

「使えない」のではなく「単位が違う」

この挙動自体は、レコードを探す用途では理にかなっています。「商品Aを含む注文を探す」なら、まさにこの動きが欲しい。

噛み合わなくなるのは、行を数えたい・行だけを取り出したいときです。

  • 商品Aが何件売れたか数えたい → レコード数は分かるが、行数は分からない
  • 商品Aの明細だけを一覧で並べたい → 他の商品の行も一緒に出てくる
  • 商品ごとの金額を集計したい → テーブルの中の値は、そのままでは集計軸に使いにくい
  • 担当者ごとに明細を配りたい → レコード単位でしか切り出せない

kintoneのレコードは1件のかたまりで、テーブルはその中の入れ子です。一覧・グラフ・通知はレコードを1件として扱うため、入れ子の中の1行を独立した対象として扱えません。ここが設計上の分かれ目になります。

標準機能でできる対処

1. そもそもテーブルをやめて、1行1レコードにする

いちばん素直な解決です。明細をテーブルではなく別アプリのレコードとして持ち、親レコードとは関連レコード一覧でつなぎます。

こうすると1行が1レコードになるので、絞り込みも集計もグラフも、すべて標準機能のまま素直に効きます。行を数えたい・行で抽出したいという要件があるなら、この形が本来の姿です。

ただし入力の手間は増えます。1件の注文に10明細あるなら、10レコード作ることになります。テーブルの「まとめて入力できる」利点は失われます。

2. 集計したい値だけ、テーブルの外に出しておく

テーブルの入力しやすさを残したまま、扱いたい値だけをテーブルの外の通常フィールドにも持たせる方法です。

たとえば明細の合計金額を計算フィールドで外に出しておけば、その値でグラフも絞り込みも作れます。テーブルは入力用、外のフィールドは集計用と役割を分ける考え方です。

合計や件数のような数値は計算フィールドで対応できますが、商品名や担当者のようなテキストの値は、標準の計算フィールドでは外に出せません。ここが手詰まりになりやすい部分です。

3. 関連レコード一覧で見せる

明細を別アプリに持ったうえで、親レコードには関連レコード一覧として表示する方法です。1つ目の派生形ですが、見た目はテーブルに近くなります。

ただし関連レコード一覧の値は、そのアプリの絞り込みや集計には使えません。あくまで表示用です。

テキストの値を外に出したいとき

実務で行き詰まるのは、たいてい2番目の「テキストの値を外に出せない」ところです。合計金額は計算フィールドで出せても、「このレコードに含まれる商品名」「明細の担当者」は標準では外に出せません。

手で書き写す運用にすると二重入力になり、書き忘れたレコードから静かに崩れていきます。

テーブルコピープラグインは、この写す作業を保存時に自動化するものです。テーブルの列の値を、テーブル外のフィールドへコピーします。コピー先は通常のフィールドなので、一覧の絞り込みにも、グラフにも、条件通知にも、CSV書き出しにもそのまま使えます。複数行あるときは改行で連結し、テーブルが空のときは書き換えません。

対応しているのは「文字列(1行)」と「ユーザー選択」の列です。数値や日付の列には対応していないので、金額の合計などは従来どおり計算フィールドを使ってください。購入前に無料で試せます。

まとめ

  • テーブル内フィールドでの絞り込みは効く。ただし単位はレコードで、条件に合う行が1行でもあればそのレコードが出る
  • 表示されるのはテーブル全体。条件に合わない行も一緒に見える
  • 行を数えたい・行だけ抽出したいなら、1行1レコードの設計に変えるのが本筋
  • 入力しやすさを残すなら、集計に使う値だけをテーブルの外に持つ
  • 数値は計算フィールドで外に出せるが、テキストの値は標準では出せない

アプリを作るときに「この値は後で数えたくなるか」を一度考えておくと、テーブルにするか別レコードにするかを迷わずに決められます。あとから作り替えるのは、データが増えてからだと大仕事になります。

kintoneプラグインのご購入はこちら

業務効率化に役立つプラグインを多数取り揃えています。30日間無料トライアルあり。

プラグインを探す