今回はレコード更新でチェックボックスの選択を追加する方法をご紹介します。
この記事では「append 関数」と「findif関数」を使用します。
ただし、追加先のチェックボックスの選択しようとする項目が選択済みかわからない状態で選択を追加する、という想定の上で、単純に選択を追加しようとするとエラーになるところを、そのエラーを発生させずに選択を追加する、というカスタマイズを実現します。
具体的には
「申請アプリ」のラジオボタンのフィールド値(PC)を、
「管理アプリ」のチェックボックスに既存の値(タブレット)がセットされている状態で追加する
という動きになります。
チェックボックスに「append 関数」のみで選択済みの項目を追加するとエラーになります
「append 関数」を使用すると配列にある既存の値は残しつつ、値を追加するようなことができます。
ただしこの関数だけだと、セットする値が更新先のチェックボックスにすでにセットされている場合、エラーになります。
例えば、更新先アプリ(管理アプリ)の機器チェックボックスに「PC」を含めた値がセットされている状況で、以下のように「PC」を追加するアクションを実行するとします。
上記のアクションで、設定した式の記述例はこちらです。
= append (@out.機器, "PC")
そうすると次のようなエラーが発生します。
入力内容が正しくありません。
Code: CB_VA01
records[0].フィールドコード.values[x].value: xxは重複しています。
カスタマイズ例
では、上記のエラーを出さずに、セットしようとしている値がすでにあるのかわからないチェックボックスに対して値をセットするカスタマイズをご紹介します。
カスタマイズの設定例はこちらです。
ポイントはマッピングにて「append 関数」と「findif関数」を使用している点です。
設定例の式はこちらです。
= append (findif ( @out.機器 , "!=", 機器_申請 , @out.機器 ), 機器_申請)
「@out.機器」は「マッピング先アプリの機器フィールド」を指します。
findif関数の1つ目は配列なので、このフィールドの状態であれば、内容は ["PC”,”タブレット”]です。
「機器_申請」は「マッピング元アプリの機器_申請フィールド」を指します。
上記の式により「findif関数」で更新先のチェックボックスからセットしようとしている値を除いた状態のチェックボックスを配列として取り出し、そのチェックボックスにセットしようとしている値を「append 関数」で追加する、ということを行っています。
イメージとしては、["PC", "タブレット"] から"PC"を除いた["タブレット"]という配列を「findif関数」で取り出し、そこに"PC"を追加する、というものです。
これにより更新先のチェックボックスにすでにセットされていても本記事の前半で説明したエラー(「チェックボックスに「append 関数」のみで選択済みの項目を追加するとエラーになります」節の内容)を発生させずにすみます。
なお、フィールド指定ではなく、固定値を使用する場合はこちらが設定例になります。
設定例の式の記述はこちらです。
= append (findif ( @out.機器 , "!=", "PC" , @out.機器 ), "PC")
まとめ
「findif関数」は難しいですが、有効に使えるようになるとカスタマインで行えることがさらに増えます。
ぜひ試してみてください。
ご不明な点がございましたら、チャットでお問い合わせください。