kintoneカスタマイズにおける注意点【意外な落とし穴】

kintoneカスタマイズにおける注意点【意外な落とし穴】

3年ほどkintoneを標準/JavaScript/サポート範囲外のゴリ押し問わずカスタマイズしてきましたが、わかった事は、kintoneは標準機能だけでも大体の事はできるという事。

 

ルックアップ、関連レコード一覧で他のアプリを参照したり、ワークフローを設定したり、アクセス権を設定したり・・・etc

 

ただ、大体の事ができる、という事はできない事もある。というわけで、「これってkintoneでできる?」という質問に「(大体の事はできるし)できます」と答えてしまい、結果できない(少なくとも標準機能では)。という事が何回か・・・。

 

というわけでkintoneカスタマイズ未経験者がハマりそうな注意点について、幾つか覚えがあるので、今回はそれをシェアしたいと思います。問題を挙げるだけではなんなので、解決策も挙げていきます。

標準機能でできると思ったら意外とできなかった事

文字列結合フィールドを重複禁止に設定する

kintoneでは標準機能で「アプリ内の特定のフィールドに対して重複を禁止する」という設定が可能です。

ただし、「項目Aと項目Bを結合した項目Cの重複を禁止する」という設定はできません。

以下添付画像のように、「自動計算する」にチェックすると、「重複を禁止する」が設定できないんですよね。

解決方法

解決方法としては以下が挙げられます。

項目Aと項目Bを連結した値を項目Cに設定するJavaScriptカスタマイズをする。
※項目Cは自動計算をしない通常の文字列1行フィールド。自動計算をしないので、重複禁止が設定できる。

カスタマイズの難易度としては低いです。また、文字列結合のサンプルプラグインも存在する為、プラグインを使用しても良いでしょう。

自アプリをルックアップする

ケースとしては、例えば以下の様な問い合わせ管理アプリがあるとします。

「1レコード:1問い合わせ」で管理しますが、中には似たような問い合わせもあるでしょう。問い合わせを紐付ける為、サブテーブルで自アプリの問い合わせNoをルックアップしたいのですが・・・

「関連付けるアプリ」に自アプリが出てこない為、ルックアップできない。

関連レコード一覧は自アプリの参照ができるけど、ルックアップはできないのが気になるところですが・・・。

解決方法

解決方法は以下が挙げられます。

自アプリを参照するJavaScriptカスタマイズ、もしくはプラグインを使用することになります。対象レコードの絞込み、対象レコード選択の為のポップアップウィンドウ表示と、やや込み入ったカスタマイズとなります。

ルックアップの拡張プラグインも幾つかサードパーティからリリースされているので、そちらを利用しても良いでしょう。

関連レコード一覧の紐付けにルックアップフィールドを設定する

これといったケースが思いつかない。

確か「これできないのか・・・」と悩んだ記憶があるのですが、どんなケースだったか忘れてしまいました・・・!

解決方法

解決方法は覚えていました。以下の通りです。

ルックアップのコピー先に、ダミーの紐付け用フィールドを設定します。つまり標準機能で解決可能。ちょっと気に食わないのは意味の無い(紐付けの為だけの)フィールドが存在してしまうと言う事。可能であればダミーフィールドは編集不可にしたい所。

自力でゴリゴリと、ルックアップフィールドで紐付け可能な関連レコード一覧相当のフィールドを描画する、というのも可能ですが、中々高度。現実的には前者の対応になるかと思います。

スペースのウィジェットをカスタマイズする

2019年7月のアップデートでポータルのカスタマイズAPIは実装されましたが、記事執筆時点ではスペースのカスタマイズについては未対応。

実際の運用では各部署毎にスペースを切って運用する事がほとんどかと思います。そうなるとアプリのデータを取得して独自の内容を描画するところもポータルではなくスペースにしたいところなのですが・・・。

解決方法

これに関しては以前記事を書いたので、以下が参考になるかと思います。

レコードのアクセス権で日付フィールドと「当日」と比較する

これも何故できないんだろう、と疑問。

kintoneでは標準機能で「アプリ」「レコード」「フィールド」に対して柔軟にアクセス権を設定できますが、「レコード」に対してのアクセス権で日付フィールドと「当日」の比較ができないんですよね。

アクセス権の設定画面を見ると、比較対象の日付を固定で設定する形です。

これだと、現在日付 > 公開期限 になったらレコードを非表示にしたい、とかができない。

解決方法

これに関しては胸を張って解決方法と言えるものが思いつかない・・・。

JavaScript/プラグインでのカスタマイズとなりますが、現在日付と日付フィールドを比較し、アクセス権を設定する、という中々高度な内容。また、ざっとプラグインを探してみましたが見つかりませんでした・・・。

考えてみると、現在日付とは結局の所端末の日付から取得する為、変更が可能。つまりアクセス権設定の強行突破が可能と言えば可能。だから実装されていない・・・?

おわりに

解決方法を挙げていてなんですが、「自分がやりたい事、でも仕組み上できない事」は、そもそもやり方が違うか、やる必要が無い事、という可能性もあるので、ゴリゴリとJavaScriptカスタマイズをする前にアプローチを変えてみる、というのも良い手かと思います。

kintoneカテゴリの最新記事