お世話になります。
今回初めて投稿させて頂きます。
現在Kintoneの方で下記のカスタムを実装したいと考えていますが、
プロパティがあるのか無いのか分からず苦労しています。
解決したい内容
複数選択フィールドの選択肢を動的に変更したい。
例えば
app.record.create.change.<フィールドコード>を発火点とし、
別アプリから持ってきた配列を、ターゲットの複数選択フィールドの選択肢としたい、という様なものです。
<複数選択フィールド>.valueであればその選択肢が元々無いとエラーになるだけで、選択肢への追加にはなりません。(選択をする・外すではなく、選択肢自体を追加・削除したいのです)
for (var ii = 0; ii < <配列名>.length; ii++){
record.<複数選択フィールド>.(ここから先の記述が分からない);
}
で配列をすべて選択肢に組み込めれば良いのですが・・
これで動的に選択肢に組み込んだものを複数選択させて、表記ゆれのないValueを作りたいです。
VBAではリストボックスのクリア・選択追加が出来ていたので、少し戸惑っています。
Kintoneの仕様上無理なのか、自分が必要な情報、プロパティを見つけられていないのかが分からず、お手数ですが、ご教授いただければ幸いです。
Hideki Hayashi さん
まず結論としては、それっぽいアプローチは可能です。
以下のページに記載されている & ご認識の通り、複数選択フィールドのプロパティは type と value しかありません。
https://developer.cybozu.io/hc/ja/articles/202166330
type はフィールドタイプが格納されているので MULTI_SELECT 固定です。
value はフィールドの値、複数選択フィールドだとチェックが入っている値が保存されています。
カスタマイズでは value が変更可能で、チェックを入れる、外すの行為しかできません。
完璧な方法ではありませんが、対応方法としては、以下が考えられます。
1.複数選択フィールドを2つ用意する (複数選択A、B)
2.app.record.create.show で 複数選択A を非表示にする
3.app.record.create.change.<フィールドコード>を発火点とし、別アプリから持ってきた配列をもとに A に値を格納する
4.app.record.create.change.複数選択A を発火点とし、A の値をもとに B の選択肢の表示を DOM 操作によって実装する
DOM 操作なのでアップデートによってカスタマイズが動かなくなる可能性はありますが、
この方法で実装できるかと思います。
HANSAさん
ご回答いただきありがとうございます。
やはり、フィールドプロパティの方では、選択肢の増減は出来ないのですね。
教えて頂いた方法を、Kintone UI Componentを使って実装する方向で考えてみます。
まずはプロパティのページをご案内頂き、設定が無いというところがクリアになって、
のどにつっかえたものが取れたような気分です。
重ねてありがとうございました。