脱エクセル化には様々な課題がありますが、
今回kintone内でエクセルのように使用できるものがあり、
これを使ってWEB化したシステムができましたので、このプラグインをご紹介いたします。
krewSheetとは
kintoneアプリの一覧画面の見た目を、エクセルライクにすることができます。
通常は一覧画面でのデータ編集機能を使用すると、1行ずつ更新をしなければなりませんが、
krewSheetを使うと複数の行を一括で更新することが可能となります。
1行辺りの高さも狭くなり、一覧画面でのデータ参照が見やすくなるのもよいところです。
公式サイトのデモ紹介ページより
https://krew.grapecity.com/use-case/
通常のkintone利用ですと、こちらのようにデータが並んでいますが、

krewSheetを利用すると、見た目がさっぱりしているのがわかります。

通常利用と比べると圧倒的な見易さのkrewSheetですが、
トライステージの業務要望としてはこれだけに留まらず、
ここに更なる拡張を要望されました。
では、カスタマイズ性についてはどうでしょうか。
カスタマイズ性について
公式で提供されているAPIはこちらの通り
https://docs.krew.grapecity.com/krewsheet/#event_handling.html
https://docs.krew.grapecity.com/krewsheet/#event_recordlist.html
公式サイトを見る限りでは、一覧画面で利用できる
保存、削除、値変更時等でイベント利用ができる記載があり、
通常のkintoneとはあまり変わらない印象です。
ただし、イベント内で処理ができるところはkintoneのレコードに対する編集のみで、
例えば「データがこうなった場合、セルの書式をこう変えたい!」
みたいなものをロジックで行うことはできませんでした。
エクセルと同じように「条件付き書式」の設定を入れることはできるため、
こういったものを組み合わせていくようです。
しかしながら、トライステージでは通常利用の範囲ではカバーできない
仕様が要望されました。
・別アプリの○○項目をレコードに表示したい
・社内システムに保持しているデータもレコードに表示したい
・レコード内でボタンを押下させて子画面を開き、子画面の入力情報を呼び出し元に返却したい
こういったものはもはや通常利用ではお手上げです。
調べてみると、サポート外ではあるが独自のカスタマイズを行うことは可能との記載がありました。
なお、krewSheetを表示している一覧上で、krewSheetが提供するAPI以外を使用して実装した独自のカスタマイズを組み込んで動作させることは可能ですが、その場合に発生した動作についてはサポート外とさせて頂きます。
https://krew.zendesk.com/hc/ja/articles/360000153747-krewSheet%E3%82%92JavaScript%E3%81%A7%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B-
動作保証はしないが、自己責任でカスタマイズは行ってよさそうとのことで、ここからが魔改造の始まりでした。
結果的にはこのカスタマイズによって
・別アプリの○○項目をレコードに表示したい
・社内システムに保持しているデータもレコードに表示したい
・レコード内でボタンを押下させて子画面を開き、子画面の入力情報を呼び出し元に返却したい
といった仕様も満たすことができ、なんとかアプリ作成が完了しました。※途中でkrewSheetのアップデートが入り、動かなくもなりました
開発上便利なところ
項目の表示・非表示をドラッグアンドドロップで設定ができる部分は使い勝手がよい。
セルの書式設定や条件付き書式、背景色の変更などの設定も可能で、
設定方法はエクセルとほぼ同じように使うことができる
特に強みだと思えるところ
数式列を使うことで、保存されないデータの表示を行うことが可能
アプリ内にデータを保持したくはないが、1レコード内に関連した数値やデータを表示したい場合は、
数式列を使用することで、ダミー行のように扱うことができる
これにより、アプリ内でデータを保持することがない参照専用の列を作ることができる。
少し使いづらいところ
公式でサポートされているAPIが少なく、
通常利用ではカスタマイズができる範囲が狭い。
krewSheetの導入で利便性が格段に向上するため、もっと開発者側で開発しやすくなると、導入者も更に増えると感じた。
kintone利用のデータ参照・保存をもっと使いやすくしたいといった要望があれば、一度krewSheetを検討してみては如何でしょうか。
