Handsontableを使ってkintoneをExcelライクに入力しよう その1 - 基本編
はじめに
kintoneはブラウザーからレコードの一覧の表示や編集ができますが、Excelのような画面で閲覧・編集がしたいという要望を度々聞きます。
今回は
Cybozu CDN
で公開されている、
Handsontable
を使ってExcelライクな入力を実現してみました。
やり方を以下にまとめますので、興味のある方はぜひ試してみてください。
Handsontableとは
ホームページ:
Handsontable
Handsontableは、Excelのようなスプレッドシートライクな入力を可能にしてくれるJavaScriptライブラリです。
サンプルページ
で試すとわかりますが、Excelのようにデータ入力ができるだけでなく、セルの書式の指定やチャートが作れたりと、機能が多いのも魅力です。
kintoneカスタマイズでの導入方法
実際に、Handsontable(無償版)をkintoneのカスタマイズに利用してみましょう。
デモ環境
デモ環境
で実際に動作を確認できます。
ログイン情報は
cybozu developer networkデモ環境
で確認してください。
サンプルアプリの準備
まずはアプリの準備をします。
フィールドの設定
サンプルアプリのフィールドは以下です。
フィールド名とフィールドコードは同一にしました。
| フィールド名(フィールドコード) | フィールドタイプ |
|---|---|
| レコード番号 | レコード番号 |
| 会社名 | 文字列(1行) |
| 先方担当者名 | 文字列(1行) |
| 見込み時期 | 日付 |
| 確度 | ラジオボタン |
| 製品名 | ドロップダウン |
| 単価 | 数値 |
| ユーザー数 | 数値 |
| 小計 | 計算 |
一覧の設定
アプリの一覧は、カスタマイズビューを用います。
スプレッドシート表示のための要素をHTMLで記述します。
|
|
カスタマイズビューについての詳細は、 カスタマイズビューを作成してみよう を参照ください。
JavaScript / CSSの設定
今回はCybozu CDNに登録されているものを利用します。
Cybozu CDN
にはJavaScriptだけでなくCSSファイルも提供されている上、キャッシュも有効になっているので高速化を図れるという利点があります。
今回はversion 6.2.2を利用します。
アプリのJavaScript/CSS設定画面には、下記URLを指定します。
- JavaScript URL
https://js.cybozu.com/handsontable/6.2.2/handsontable.full.min.js - CSS URL
https://js.cybozu.com/handsontable/6.2.2/handsontable.full.min.css
カスタマイズで利用しているHandsontableは、v7.0.0以降はMITライセンスではなく有償です。
このカスタマイズでは、
MIT
ライセンスのv6.2.2を利用しています(
ライセンス表記
)。
v7.0.0以降を利用する際は
HandsontableのHP
で有償ライセンスを購入し、ライセンス条件にしたがって利用してください。
詳細は、
Cybozu CDNライセンス対応ガイド
を参照してください。
データの入力
確認のために、サンプルデータを先に数件入力しておきましょう。
JavaScriptプログラミング
実際にJavaScriptでプログラミングしていきます。
Handsontableの仕様や使い方は
Handsontableの公式ドキュメント
を参照ください。
Handsontableの使い方
次のように指定するだけでスプレッドシートの表示が可能です。
Handsontableのdataオプションにkintoneのレコードデータを指定すればバインドできそうです。
|
|
スプレッドシートにレコードを一覧表示する
まずは単純にkintoneのレコードをスプレッドシートに表示してみます。
Handsontableのdataオプションには、kintoneのレコードデータを指定し、columnsにはフィールド名.valueと指定することで、kintoneのレコードデータをそのまま反映できます。
必要に応じて、colHeadersオプションに配列を指定することで、ヘッダー行も指定できます。
viewIdはカスタマイズビュー設定時のviewIdを入力してください。
|
|
これでkintoneに登録したデータをExcelのように表示できるようになるはずです。
スプレッドシートに表示したレコードを更新する
表示はできたので、その表示されたデータを更新できるようにします。
データの更新時、afterChangeオプションに指定したメソッドが呼び出されるので、そのメソッドを利用してkintoneのアップデート処理を行います。
また、columnsオプションを指定するときは、編集されたくないデータをreadOnlyに指定できます。
|
|
afterChangeメソッドの引数Changeは次の配列が格納されます。
上記の例では、"変更があったセルの行数"を参照しどのレコード番号のデータを変更するかを指定しています。
|
|
ちなみに、データのバインディングは自動で行われますので、スプレッドシート上で変更したデータは、kintoneのevent.records変数にすでに反映されています。
便利ですね。
おわりに
今回は、Handsontableを用いて、Excelライクな見た目で、レコードの表示と編集が行えるようにkintoneをカスタマイズしました。
次回は、
Handsontableを使ってkintoneをExcelライクに入力しよう その2 - 基本編
でレコードの追加やプルダウンによる選択などを試してみます。
このTipsは、2022年7月版kintoneで動作を確認しています。
