HOME > 最新情報 >

kintoneテーブル機能とは?レコードに表形式でデータを保存してみよう!

公開日: 2024年04月30日 / 更新日: 2024年04月30日


コラムkintone

kintoneテーブル機能とは?レコードに表形式でデータを保存してみよう!

kintoneのテーブル(サブテーブル)フィールドは、レコードの中に表をつくる機能としてよく知られています。しかし、表にとどまらない便利な使い方や、Excelと違いできないこともあるのは意外と知られていないのではないでしょうか。

この記事では、そんなテーブルの基本から、注意点やおすすめのプラグインまで詳しくご紹介します。

目次

kintone(キントーン)のテーブル(サブテーブル)とは?

レコードのなかに表形式のデータを持たせることができる機能

kintoneのテーブルは、レコードのなかに表形式のデータを持たせることができる機能です。

まずはサンプルでイメージを掴んでみましょう。こんな感じです。

勤怠記録や問い合わせの応対記録など、記録する際に、日毎のデータはサブテーブルに登録して、それ以外のデータは普通のフィールドに登録するといった使い方ができます。応対記録であれば、普通のフィールドに年や月や案件、お客様の情報を入れておき、応対日時と内容、担当者のフィールドといったデータはテーブル形式で入力するといった感じです。

帳票プラグインとの相性もよい

また見積書や請求書アプリではお客様情報などは普通のフィールドに登録しておいて、明細項目(品名・単価・数量・金額)などをサブテーブルに表形式で登録する運用が考えられますが、このようにしておけば視認性も良いですし、Reptone U(レポトン)やプリント・クリエイターといった帳票出力プラグインとの相性も良いです。

kintoneはリレーショナルデータベースに似た使い方を想定しているので、原則としてはkintoneアプリのデータがひとつの表を構成するようにできています。フィールドが表の列(項目名)にあたり、アプリ内の1レコードがその表の1行に該当するというイメージです。

それに対して、サブテーブル機能はひとつのレコードのなかにさらに表(テーブル)の形でデータを持たせることができる機能です。この機能によって例えば見積書アプリを作成する際などに、見積もり明細部分を表形式でレコードに保存するということが可能になります。実際の業務をkintoneで運用する際にはなくてはならない機能といえるでしょう。

kintoneをデータベースとして使うための詳しい情報はこちらの「kintone(キントーン)をデータベースとして使うために構造を知ろう!」の記事でご紹介しておりますので是非参考にしてみてください。

関連レコード一覧との違い

kintoneにはサブテーブルと似た見た目のフィールドとして、関連レコード一覧があります。テーブルと関連レコード一覧の一番大きな違いは「テーブルとして表示されているデータがレコードのデータとして登録されているか・いないか」です。

上記の例のように、関連レコード一覧は、アプリ作成時管理者が指定した絞り込み条件に合致した他のアプリのレコードの情報を引用して表示しているだけなので、レコードのデータの一部ではありません。そのためユーザーが関連レコード一覧上で表示されている情報を直接編集することはできません。

一方サブテーブル機能はレコードのデータとして登録されるデータになります。

両者の違いを理解して使い分けたいですね。

関連レコード一覧について詳しくはこちらの「kintone関連レコード一覧とは?便利な使い方や設定方法、注意点を解説 」の記事で詳しくご説明しております。

kintoneのテーブル設定方法

まずはアプリにテーブルを設定する方法を見ていくことにしましょう。

方法は二通りあります。まずテーブルの一部となる項目をフィールドとして先にドラッグ&ドロップで追加した後に対象フィールドをテーブルとして設定する方法と、先にテーブルフィールドを追加してそこにテーブルの項目となるフィールドをドラッグ&ドロップで追加する方法です。

テーブルの項目となるフィールドを先に追加する方法

「品名」「単価」「数量」「金額」が項目となる見積もりテーブルを例に考えてみましょう。

フィールドの種類はそれぞれ以下の通りとします。

品名:文字列1行
単価:数値
数量:数値
金額:計算(計算式 ... 単価 * 数量)

1)まずドラッグ&ドロップでフィールドを追加します。この例で「金額」は各行の「単価×数量」を自動的に算出したいので計算フィールドを設置し「単価 * 数量」を計算式として設定しました。このときテーブルの項目にするフィールドは一列に並ぶようにします。

2)一列に並んでいるフィールドの一番右側にカーソルを当てると下の図のように表のアイコンが表示されます。このアイコンの上にマウスを当てると「テーブルの設定」と表示されるのでこれをクリックします。

3)「テーブルの設定」画面が表示されます。この中に「この行をテーブルにする」ボタンが表示されます。これをクリックするとその行のフィールドがテーブルとして設定されます。

注意点としては一度テーブルとして設定してしまうと元に戻せないという点です。また、すでに使用中のフィールドをテーブルに含めることもできないので注意しましょう。

4)「この行をテーブルにする」ボタンをクリックするとテーブル名とテーブルのフィールドコードの設定画面になりますのでテーブル名とフィールドコードを設定します。フィールドコードはテーブル名と同じにしておくと後々管理しやすいです。

上記のように「テーブル名を表示しない」のチェックを入れるとテーブル名が表示されなくなります。見た目をスッキリさせたいときはチェックを入れましょう。

5)「保存」をクリックするとテーブルの完成です。このように表形式のデータをひとつのレコードのなかに登録できるようになります。

6)さて、見積もりの明細表を例にここまでみてきましたが、ここで欲しくなるのが「金額」フィールドの合計ではないでしょうか?ついでにこの設定もしてしまいましょう。

まず合計金額のフィールドとして計算フィールドを追加します。そして今回はSUM関数を使います。

SUM(テーブルのフィールド)

と設定すると対象のフィールドの各行の値の合計が計算される仕組みになっています。

今回は各行の「金額」の合計を算出するので「合計金額」フィールドには「SUM(金額)」と計算式を設定します。

それでは実際にデータを入れてみましょう。こんな感じになります。

kintoneのテーブル機能のイメージがはっきりしてきたのではないでしょうか?

上記の例で品目や金額は手入力する形になっていますが、実際の運用では別途商品マスターに商品をあらかじめ登録しておき、ルックアップで品名と金額を引っ張ってくる運用にすれば表記ブレや金額のミスタイプなどを防げます。

ルックアップの使い方についてはこちらの「kintoneルックアップとは?基本から自動更新プラグインまで徹底解説!」の記事で詳しく扱っています。

テーブルフィールドをまず追加してそこに項目を追加する方法

まず、左側のフィールドの種類のメニュー項目から「テーブル」を選択してドラッグ&ドロップします。

そうすると下のキャプチャのようにテーブルフィールド用のドラッグ&ドロップ領域が作成され「ここにフィールドをドラッグアンドドロップします」と表示されます。ここに新しくフィールドをドラッグ&ドロップするとテーブルとして設定されます。

ただし、すでに使用中のフィールドをテーブルとして追加することはできません。

kintone(キントーン)のテーブルを使ってできること

テーブル内のフィールドの並び替えやフィールドの追加・削除

テーブル内の項目、つまりフィールドの並び替えはフィールドをドラッグ&ドロップすることで簡単に行えます。

また新しいフィールドであればテーブルにドラッグ&ドロップすることでテーブルにフィールドを追加することもできます。使用中のフィールドを追加しようとしても追加できないので注意してください。

なお、フィールドを並び替えてもそのフィールドの値を利用した関数の計算結果には影響はありません。例えば先ほどの例で「金額」フィールドは「単価*数量」で設定されていますが「単価」フィールドと「数量」フィールドの順番を並び替えても金額には影響がありません。

ただし一度テーブルの項目として設定した項目をテーブルの外に移動させることはできないので注意が必要です。

またテーブルからフィールドを削除することも可能です。削除すると同時に保存されたデータも削除されますので注意しましょう。また削除対象のフィールドが他のフィールドの関数や計算式から参照されている場合は関数式や計算式を修正する必要がある場合があります。

テーブルそのもののコピー

テーブルを丸ごとコピーすることもできます。テーブルの設定マーク(歯車アイコン)をクリックすると「複製」「削除」とメニューが表示されますので「複製」を選択すると同じ構成のテーブルが作成されます。

注意が必要なのは関数を含む場合です。例えば先ほどの見積もり詳細テーブルの例では「金額」は「数量*単価」で設定されています。コピーの際、この計算式はそのままコピーされます。一見問題ないように思えますが・・・

この状態で、保存しようとすると以下のようにエラーになり「配列型の値に対して適切な関数が利用されていません」というエラーが表示されます。

実は計算式はフィールド名ではなくてフィールドコードで設定されているので「数量*単価」という計算式はコピー元の「数量」「単価」フィールドを参照していることになります。

テーブルを跨いで関数が設定されているのでこれでは正しく計算されません。kintoneでは同じフィールドコードを二つのフィールドが持つことはできないので、計算式を新しいテーブルのフィールドコードで書き換えてあげるとエラーがなくなります。

レコード一覧画面でテーブルを表示する

kintoneのレコード一覧は、基本的に1行につきひとつのレコードの情報を表示します。そのためテーブルの情報はそのままでは表示されません。

ただし、テーブルについては各レコードに「表示する」ボタンがあり、これをクリックすることで、レコード一覧でもテーブルを閲覧できます。このような表示は関連レコード一覧ではできないことに注意が必要です。

テーブルを含めてレコード一覧をファイルに書き出す

kintoneのテーブルは、レコード一覧に含まれている場合にCSVファイルやExcelブックへの書き出しが可能です。

ただし、テーブルなしで書き出す場合と異なり、テーブルの1行にはExcelあるいはCSVの1行が対応するため、左端に「レコードの開始行」という列が追加されます。また、テーブル以外のフィールドは、テーブルの行数分だけ下方にコピーして記述されます。

エクスポートしたCSVのデータを編集して同じ構成のkintoneアプリにデータをインポートすることは可能で、サブテーブルのデータもきちんとインポートされます。

ただし、自前でCSVやエクセルでデータを作ってからテーブル付きにアプリにデータをインポートしようとするときは注意が必要。というのは普通のCSVとデータ形式が異なるからです。

自前でデータを作ってkintoneにインポートするときは、公式ページにあるkintone用のCSVファイル形式についてきちんと理解した上で行うようにしましょう。

kintoneの関数を使ってテーブル機能をさらに便利に使う

SUM関数を使用して、テーブル内の数値項目の合計を算出する

先ほど見積書や請求書アプリの例をお出ししましたが、その時に欲しくなるのが各行の金額を合計する機能ではないでしょうか?

この時に使えるのがkintoneの関数機能です。kintoneではエクセルと似た関数が用意されていますが、計算フィールドに関数式を記入することで合計などの簡単な集計を行うことができます。

テーブル内のフィールドの値を合計したい場合はSUM関数を使います。

書き方は簡単で以下の通り。

SUM(テーブルの内のフィールドコード)

フィールド名ではなくフィールドコードで指定するのでそこだけ注意です。

これでテーブルの指定したフィールドの値の合計が算出されます。

他にもいくつか活用事例を見てみましょう。2番目に例のようにIF()関数と組み合わせて使うこともできます。kintoneの関数はかなり便利なので柔軟に使いこなしていきましょう。

【SUM関数の使用例】
- タスク管理で、テーブル内の作業時間フィールドの合計を出す:
 SUM(作業時間)

- 経費申請で、テーブル内の物品小計が全体で1万円を超えたら「要経理チェック」とする:
 IF(SUM(物品小計)>10000, "要経理チェック", "")

CONTAIN関数を使用して、テーブル内の条件と完全一致する行があるかどうかを判定する

テーブルの計算にはSUM関数の他にCONTAINS関数が利用できます。これは、引数に条件を取って、その条件に合致する行があるかどうかをTRUE, FALSEで返します。

CONTAINS関数とIF関数を組み合わせると便利です。

例えば対応が必要な問い合わせにつけるチェックボックスをテーブルに含めておき、チェックがあれば「要対応」、そうでない場合は空文字列にしておく、ということもできます。

以下の例では対応履歴テーブルにある「対応状況」フィールドの値に応じて「全体対応状況」のフィールドの値を決めています。「対応状況」はプルダウンで「未対応」「完了」の2択で設定されています。

「全体対応状況」フィールドは文字列フィールドですが自動計算をオンにして関数をかけるモードにした上で

IF(CONTAINS( 対応状況, "未対応"), ""未完了,"完了")

という関数式を設定しました。

テーブルに一行でも「対応状況」が「未対応」の行があれば「未完了」とし、全部が「完了」であれば「完了」とするという設定です。

「CONTAINS( 対応状況, "未対応")」の第一引数は判定対象のフィールドのフィールドコードを設定するので今回はテーブルの「対応状況」フィールド。第二引数の部分は対象フィールドにこの文字列が含まれている場合はTRUEにしたい、という文字列を設定するので今回であれば「未対応」を設定です。

実際にデータを入れたみた結果以下の通り。

他にもいくつか活用事例を見てみましょう。結構いろいろな使い方ができるかと思います。

【CONTAINS関数の使用例】
- テーブル内のチェックボックスに「対応」チェックがつけられている場合は、「要対応」とする:
 IF(CONTAINS(チェックボックス, "対応"), "要対応", "")

- テーブル内のドロップダウンに「優先度A」が含まれている場合に、重要度を+1する:
 IF(CONTAINS(ドロップダウン, "優先度A"), 1, 0) + 重要度

kintoneのテーブル(サブテーブル)でできないこと

ここまで、テーブルでどんなことができるかをご紹介してきました。テーブルは便利な点が多くある一方で、その仕様としてできないこと、注意が必要な点もいくつかあります。ここではそんなテーブルの注意点を解説します。

一度テーブルに設定すると元に戻せない

kintoneのテーブルフィールドは、複数のフィールドを表としてまとめる形で生成されます。これらのフィールドは一旦アプリを更新すると、テーブルから分離して独立したフィールドに戻したり、他のテーブルに移動したりできなくなります。

テーブルからフィールドを削除すると、そのフィールドに入力されていたデータも削除されてしまうため、他のテーブルにデータごと移動したい場合は、一旦レコードをファイルに書き出してから編集する必要があります。

またテーブルの外であるフィールドを作成してからアプリを更新すると、そのフィールドはテーブルの中に移動させることができません。

テーブルの一部として作成されたフィールドはテーブルの行の分だけ作成される、という前提であるのに対し、テーブルの外に作成されたフィールドは1レコードあたりひとつの値(ただし、ユーザーフィールドのように複数の値を持つこともある)という前提です。

テーブルとして設定した後にテーブルから外に出すことができてしまうと、複数行あったデータをどうしたらいいのかkintone側も困ってしまいますよね?そうしてトラブルが発生しないようになっているんです。

一度テーブルとして設定したフィールドは分解できないので注意

テーブルの項目にできないフィールドがある

以下のフィールドは、kintoneの仕様上、テーブルに追加することができません。

ラベル、関連レコード一覧、スペース、罫線、グループ、テーブル、レコード番号、作成者、更新者、作成日時、更新日時

また、前述した通り、これらのフィールド以外でも、すでに使用中のフィールドはテーブルに追加できません。

運用開始後のアプリでは特に注意が必要です。

ルックアップのコピー元になれない

テーブルはルックアップフィールドを配置して他のアプリのデータを取得できますが、逆に他のアプリからテーブルを参照することはできません。これは、同じフィールドに複数の値が存在しうることを考えると当然の仕様ですが、テーブル内のデータを扱う際には気を付けたい事項です。

関連レコード一覧の「表示するレコードの条件」「表示するフィールド」にテーブルを指定できない

kintoneでは、関連レコード一覧で他のレコードを参照して「表示するレコードの条件」としてテーブルを指定できません。また、「表示するフィールド」にもテーブルを含めることができません。

一方で、グラフや表の集計条件や、アプリ内検索にはテーブルを指定できます。ただし、集計条件アプリ内検索では、そのレコードのテーブル内に1行でも絞り込み、あるいは検索した値が含まれていれば結果に反映されることに注意が必要です。

その他テーブルの制限一覧

この他に、kintoneのテーブルで注意が必要な点は以下の通りです。

 - アプリアクションのコピー先になれない(フィールドの関連付け」のコピー元に「レコードのURL」を指定した場合)
 - レコードタイトルとしてテーブルは指定できない
 - テーブル内のフィールドにアクセス権を設定できない
 - テーブル内のデータをファイルから一括更新できない(添付ファイルが含まれている場合、テーブル内のルックアップのコピー元で値の重複を禁止していない場合、ルックアップ先のアプリの閲覧権限がない場合)
- グループフィールド内にテーブルを配置できない
- テーブル内のフィールドはソートできない
- 「メールワイズ連携」プラグインを利用している場合、メール本文のテンプレートに、テーブル内のフィールドを予約語として挿入できない

テーブルに関する制限を理解して、しっかり使いこなしたいですね。

「ATTAZoo+テーブルデータ転送+」でテーブルのそれぞれの行を別アプリにレコードとして登録する

ここまで、kintoneの標準機能の範囲内でテーブルフィールドができること、できないことを解説してきました。しかし、標準機能では難しいことも、プラグインを使えばJavaScriptのカスタマイズも必要なく簡単に実現できることがあります。

ここでは、テーブルをより便利に活用するためのプラグイン「ATTAZoo+ テーブルデータ転送+」をご紹介します。

ATTAZoo+テーブルデータ転送+は、テーブルのデータを1行1レコードとして別アプリにコピーできるプラグインです。これを使えば、テーブルの各行をレコードとして他のアプリに展開でき、テーブル内では難しい集計も簡単に行えます。

ATTAZoo+テーブルデータ転送+の設定方法

それでは、実際にプラグインを設定してみましょう。

1. プラグインの設定を開きます。

2. プラグインを追加し、その設定を開きます。

3. 転送先アプリを指定します。テーブルのデータをレコードとして展開したいアプリの名前を「検索」ボックスに入力し、「アプリの指定」で対象のアプリを選択します。

4. データ転送元とデータ転送先のフィールドを選択します。左側に転送元のフィールド名、右側に転送先アプリのフィールド名を入力します。なお、テーブル内の計算フィールドは転送先では数値フィールドとして扱われるため、注意が必要です。また、テーブルに含まれないフィールドも転送できます。

5. 転送対象のテーブルの行の条件を指定します。「設定しない」とすると、テーブルのすべての行が転送されます。また、転送成功後に更新するテーブルフィールドの設定としては、転送が完了した後の転送元のテーブルにおいて、転送した行の各項目に所定の値を与えることができます。さらに、オプションとして、データ転送を実行できるユーザーを指定できます。ユーザー、組織、またはグループ単位で設定できます。

6. 設定を保存してアプリを更新すると、レコード詳細画面に「データ転送」のボタンが現れ、クリックすることでテーブルのデータを設定した転送先に登録できるようになります。

ATTAZoo+テーブルデータ転送+の活用事例

ATTAZoo+テーブルデータ転送+の使い方がわかったところで、いくつか活用事例をご紹介します。

事例1)

課題:タスク管理アプリで、作業時間のテーブルから担当者ごとの作業時間を比較したい 

プラグイン活用方法:テーブルデータ転送+で作業時間管理アプリに担当者と作業時間の組み合わせをレコードとして登録することで、グラフで簡単に比較できるようになった

事例2)

要望:物品申請アプリで、1レコード1申請としてアプリを設計したが、補充してほしい物品の名前と数をテーブルで入力してもらうため、どの物品を補充したかレコード一覧からはわかりづらい

プラグイン活用方法:テーブルデータ転送+で物品管理アプリに1レコード1つの物品として登録することで、補充していない物品の把握が簡単にできるようになった

事例3)

課題:見積管理アプリで、確定した明細情報をテーブルで管理していて、案件管理アプリに転記するのが面倒だった

プラグイン活用方法:テーブルデータ転送+で明細をワンクリックで案件管理アプリに転送できるようになった


このように、テーブルデータ転送+はレコード内のテーブルデータをより詳細に分析したいときだけでなく、レコード一覧での視認性を高めたいとき、テーブルの内容を転記する手間を省きたいときにも便利なプラグインです。ぜひ活用してみてください。

JavaScriptカスタマイズなし!テーブルをさらに使いこなす裏技

さて、ここまでは、標準機能とプラグインを使ったテーブルでできること、できないことを解説してきました。しかし、テーブルでできないことの中には、実はちょっとした工夫次第でその機能に近いものを作れることもあるんです。

ここでは、標準機能とプラグインだけでできる、テーブルをさらに使いこなすための裏技をご紹介します。

テーブルの行数をカウントする

kintoneのテーブルには、行数をカウントする機能がありません。しかし、標準機能の中で工夫をすれば、面倒なカスタマイズをせずとも簡単にこの機能が実現できます。早速その設定方法をご紹介します。

【設定方法】

1. 行数をカウントするテーブルに、新しい数値フィールドを追加します。

2. 数値フィールドの初期値を1に設定します。

3. 計算フィールドを追加し、行数カウンタフィールドの合計を表示させるようにします。
       計算式: SUM(行数カウンタ)

4. フォームを保存してアプリを更新すると、行数が表示できるようになりました。

  1.  

このように設定するだけで、テーブルの行数が自動で表示されるようになりました。

ところで、行数カウントに使用している数値フィールドを非表示、あるいは編集不可にしたいと思う方もいらっしゃるかと思います。標準機能ではテーブル内のフィールドはアクセス権が設定できませんが、プラグインのATTAZoo+ 入力サポート+を使えば簡単に設定できます。

この「ATTAZoo+ 入力サポート+」と組み合わせて運用すれば、テーブル内の行数カウント用のフィールドを編集不可にしたり、非表示にすることによって純粋に行数カウント用のフィールドとして運用することができます。

では早速「入力サポート+」プラグインの設定方法です。

【設定方法】

1. プラグインの設定を開きます。

2. プラグインの追加から「ATTAZoo 入力サポート+」を追加し、設定を開きます。

3. 「フィールド名」でテーブルの列を選択できます。また、「表示制御種別」では編集可 / 編集不可 / 非表示の中からひとつ選択できます。保存してアプリを更新したら設定完了です。

4. 以下のように、無事編集を禁止できました。

テーブルの数値の平均を取得する

また、行数のカウントができれば、テーブル内の数値の平均を集計することもできます。前述したテーブルの行数をカウントする設定のうち、自動計算の計算式を以下のように変更します。

SUM(平均を計算したいフィールド名)/SUM(行数カウントフィールド名)

このように、kintoneは標準機能やプラグインを駆使すれば、JavaScriptによるカスタマイズなしに様々な機能を実現できます。

kintoneは何かと制限があって使いにくい、と感じておられる方も少なくないかもしれませんが、諦める前にこうした裏技を研究してみましょう。工夫次第ではJavaScript でコードを書かなくてもかなり柔軟に使うことができたりします。

まとめ:kintoneのテーブルを使いこなそう!

いかがでしたか?この記事では、テーブルでできること、できないことや活用できるプラグインなどをご紹介しました。テーブルをフル活用することで、kintoneをもっと便利に使いこなせると良いですね。

他にもkintoneの記事書いていますので合わせて是非!

▶︎kintoneでアプリをパッとつくれる!アプリテンプレートの機能と使い方

DX伴走支援サービス「iTanto」にお気軽にご相談ください

kintoneの活用に困ったとき、プラグインや連携サービスや開発のご相談も、ぜひ一度iTantoにご相談ください。我々iTantoは、kintoneの標準機能を最大限に使いながら、社内浸透の方法や業務フローの再構築のサポートなども支援しております。

基本的な方針としては、まずは標準機能のフル活用。より便利に使いやすいkintoneにするための「プラグイン」を。そして、お客様のご要望に応じた「連携サービス」の選定も一貫してご提案いたします。

我々の知識と経験を活用し、お客様の現在のご状況や今後のご希望をしっかり丁寧にヒアリングし、個社にそれぞれに対応したサポートを心がけております。kintoneの社内活用や浸透をはかるパートナーとして、iTantoはあなたのビジネスを全力でサポートします。

無料セミナーも実施しております

iTantoではkintoneの導入や運用強化を考えている皆様へ向けて、定期的に無料で参加できるオンラインセミナーを実施しています。kintoneの知識をより深く理解でき、さらに便利に活用できるように、kintoneの使い方はもちろん、プラグインをご提供されている会社のご担当者さまと一緒により活用の幅を拡げる知見のご紹介などをお話ししております。

ぜひ、参加を検討いただければと思います! 

セミナーの詳細はこちらから!

ROCKET START 株式会社ロケットスタートホールディングス

私たちロケットスタートは、お客様が思い描く「働く人がしあわせになる未来」を実現するために、人×ITによる『伴走HDX』で、お客様の事業をサポートしている会社です。人材採用、ホームページの制作、業務のITクラウド化支援などあらゆる方面でお客様をサポートいたします。お気軽にご相談ください!<お問い合わせはこちらから>

一覧へ戻る

ページトップへ