kintoneアプリのフォームに選択系フィールド(ラジオボタン、チェックボックス、複数選択、ドロップダウン)を使っている場合のTips
ブログの記事として書いていましたが、kintoneのヘルプ等関連ドキュメントにも記載がないようなので、こちらでも共有します。
※タイトルの内容を修正しました(2017/12/6)
0. まとめ
(2017/12/6追記・修正)
対象:選択系フィールド(ラジオボタン、チェックボックス、複数選択、ドロップダウン)
- 一度運用を開始した選択肢は、その後削除しても、内部的にはデータが残ってしまう。
- ファイル書き出し時のデータや「言語ごとの名称」設定時に削除した選択肢が現れる。(既存の登録データが無い場合も同様)
- ファイル書き出し時、1つを選択するフィールド(ラジオボタン、ドロップダウン)では影響がないが、複数選択系フィールド(チェックボックス、複数選択)では列が増えるため、ファイル出力を想定した業務においては注意が必要。
- 選択肢の見直しが終わったところで、新たに複数選択フィールドを設置し、データの引っ越しをするしかなさそうだ。
1. 現象の確認
複数選択フィールドの選択肢として以下の3つが登録されています。
- 選択肢A
- 選択肢B
- 選択肢C
このアプリのデータをファイルに書き出すと、次のように現在登録されていない選択肢のデータが書き出された。また、言語ごとの名称設定画面のフォーム情報にも項目が現れることが確認できます。
- レコード番号
- 文字列(1行)
- 複数選択[選択肢A]
- 複数選択[選択肢B]
- 複数選択[選択肢C]
- 複数選択[選択肢D]・・・設定にないデータ
- 複数選択[選択肢E]・・・設定にないデータ
- 複数選択[選択肢F]・・・設定にないデータ
2. どのようなときに起こるか検証
運用開始後、選択肢を削除した場合
最初にフィールドに配置した複数選択フィールドには、あらかじめ4つの選択肢がサンプルとして登録されています。通常はこのサンプル選択肢の名称を書き換えて選択肢を設定すると思います。
一旦この状態で保存し、アプリの運用を開始します。
その後、再度設定画面から、フィールドの設定を編集し、保存・運用開始します。
- sample4を削除
- sample1-3の名称を変更
今度は、「言語ごとの名称」設定のフォームタブで確認してみます。
図のように、削除したはずの「sample4」が設定項目として見えています。
kintoneでは一度アプリを作ったら、運用しながら実態に合わせてアプリを修正しながら、スパイラルアップで業務を改善していく、という手法がよくとられます。
複数選択フィールドを使う際は、一度保存して運用開始した選択肢は、名称の書き換えは問題ありませんが、削除した場合は内部データが残ってしまいます。選択肢の追加・削除を繰り返して行っていると、どんどん削除データが溜まっていくことになります。
3. なぜこうなっているか考察
(2017/12/6追記)
一度アプリが運用状態になるということは、すでにデータが登録されることを想定しなければなりません。
その選択肢を選ばれたレコードがすでに登録されている場合、 アプリのフィールド設定を操作したことで、既存のデータには影響を与えない という思想となっていることが想定されます。
データの保持に関連している、ファイル出力時のフォーマットや言語ごとの名称設定において表示されるのも同様の考え方。
(フィールドの削除については、削除操作時にデータも削除されるというアラートが表示されます)
でもちょっと・・・?なところ
「既存のデータを保持」することはこれでできていますが、「活用」については以下の点を意識しておくことが必要です。
関連レコード一覧やルックアップで参照するときの絞り込み条件や、一覧表示の絞り込み条件については、現役の選択肢しか使えない ようです。アプリデータを活用するときに必要な選択肢は、ちゃんと現役で残しておかないといけないということですね。
「既存のデータとしては保持しておきたいが、新たに入力をさせたくない」という考え方で使うこともできますが、注意が必要です。
4. なんとか消せないか頑張ってみた
残ってしまっているデータをなんとか削除できないかと、いろいろ試してみました。以下の方法で検証してみましたが、いずれもダメでした。なかなかしつこいです。
- アプリをテンプレート化して、新規にアプリ作成
- アプリの再利用で新規にアプリ作成
5. 今のところできる対策
通常、画面からアプリを使う際には特に大きな問題になることはないと思います。
しかし、 ファイル出力を想定した業務 でこのようなアプリを使う場合は、毎回不要なデータが出てくるのは困ります。既存データも無いのでちゃんときれいにしたい!という要望も出てくると思います。
現状できる対策としては、
_ アプリの設定内容が固まったところで、新規に複数選択フィールドを作り、そこに最新の選択肢をセットする 。_
というやり方で逃げるしかないと思います。シンプルな手順は以下。
- 既存データをファイル出力
- 最新選択肢を持ったフィールドを新規で設定し、既存フィールドは削除(フィールド名は既存フィールドに合わせておく)
- ファイル読み込み
既存データに消そうとしている選択肢が含まれていると、3のファイル読み込み時にエラーがでます。
もうちょっと詳しい解説記事:
https://pj.asunote.jp/ghost-in-the-app/
▼2017/12/6
- rex0220さん、大田浩さんのコメントを参考に追記・修正を行いました。
- developer network > kintone API > 共通仕様 > フィールド形式のドキュメントの注釈に以下の記載がありました。
「※1 「value」に指定する値は、kintoneのアプリのフォーム設定で、「項目と順番」で設定した値を指定します。
また、 これらのフィールドは削除済みの選択肢についてもAPI及びCSVで指定することができます。 」