rex0220 計算式プラグイン チェックボックスの扱い方

kintone のチェックボックス項目は、複数の値を持つことが出来るのでちょっと扱い方が他の項目と異なります。
※複数選択項目も同様に指定が必要です。
[計算式プラグイン](https://qiita.com/rex0220/items/ae83c6d5ce50ff7a9a73)でチェックボックス値を取得・操作してみます。

# チェックボックスの文字列変換

![2021-07-12_12h56_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/2e569c09-0749-51db-9225-7a598ad894dd.png)

- 文字列1の計算式： チェックボックス1
    - 文字列項目にチェックボックス項目を指定すると、"," 区切りで文字列に変換
- 文字列2の計算式： JOIN(チェックボックス1,"-")
    - 区切り文字を指定する場合は、JOIN 関数を使います。

テーブル内の文字列変換も同様に指定できます。

- 文字列T1の計算式： チェックボックスT1
- 文字列T2の計算式： JOIN(チェックボックスT1,"-")

# チェックボックスのチェック数カウント

チェックボックスの値は、配列で設定されているのでチェック数のカウントは、ARRAY_COUNT 関数を使います。

- チェック数1の計算式： ARRAY_COUNT(チェックボックス1)


# 計算式プラグインの設定

![2021-07-12_12h57_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/1b954caf-30ec-fb65-bd62-c94e058f9b43.png)

# kintone 標準の文字列項目の計算式で文字列変換
kintone 標準の計算式で文字列変換する場合は、CONTAINS 関数を使います。
ただ区切り文字を入れる場合は、結構面倒な手順が必要です。

自動計算の計算式：
IF(CONTAINS(チェックボックス1,"A"),"A","")&
IF(CONTAINS(チェックボックス1,"B"),"B","")&
IF(CONTAINS(チェックボックス1,"C"),"C","")

# チェックボックスのチェック判定

計算式プラグインで、チェックボックスのチェック判定を行う場合は、IN 関数を使います。

- 複数のチェック判定

![2021-07-12_15h28_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/b4ea0037-16f9-4d6a-7870-55c4e5096beb.png)

- A チェック判定<br>
IF(IN(チェックボックス3,"A"),"Aチェック")
- A or B チェック判定<br>
IF(IN(チェックボックス3,"A","B"),"A or B チェック")
- A and B チェック判定<br>
IF(<br>
AND(IN(チェックボックス3,"A"),IN(チェックボックス3,"B")),<br>
"A and B チェック")
- A and B チェック判定2 INTERSECT 関数を使って、配列の積集合で判定します<br>
IF(<br>
ARRAY_COUNT(INTERSECT(チェックボックス3,ARRAY("A","B")))=2,<br>
"A and B チェック")
- Only A 判定<br>
IF(<br>
ARRAY_COUNT(INTERSECT(チェックボックス3,ARRAY("A")))=1,<br>
"Only A チェック")

# チェックボックスのチェック判定の応用
チェックボックスの判定を応用して、数値計算してみます。
![2021-07-12_14h13_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/0151927c-7c64-66c7-dd11-9555cc84ec03.png)

- 数値2の計算式：<br>
SUM(<br>
IF(IN(チェックボックス2,"A"),1000),<br>
IF(IN(チェックボックス2,"B"),2000),<br>
IF(IN(チェックボックス2,"C"),3000))<br>

# チェックボックスの設定

配列の関数を使って、チェックボックスに値を設定できます。

![2021-07-12_16h24_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/6d2ccba4-7321-dab4-53c9-b05b0588040f.png)

- チェックボックス4； ラジオボタン4 の値を設定<br>
ARRAY(ラジオボタン4)
- チェックボックス5： チェックボックス5A,チェックボックス5B,チェックボックス5C の値を設定<br>
ARRAY(チェックボックス5A,チェックボックス5B,チェックボックス5C)
- チェックボックス6： チェックボックス6X,チェックボックス6Y の値を設定<br>
DISTINCT(チェックボックス6X,チェックボックス6Y)

※ARRAY関数は、指定された値をまとめて配列化します。
DISTINCT 関数は、値の重複値を排除して配列化します。

![2021-07-12_16h33_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/a5272125-4b8a-5dfd-908f-f6a3e2967936.png)

# テーブル内のチェックボックス値を取得して、他のチェックボックスに設定

TDS, TDSIF 関数を使って、テーブル内のチェックボックス値をまとめて取得できます。

![2021-07-12_16h51_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c0bc0ef8-4824-b6b2-7562-5cdde751d591.png)

- チェックボックス7：　テーブル内のチェックボックスT7 の値をまとめて設定<br>
TDS(ARRAY(チェックボックスT7))
- チェックボックス7X：　ドロップダウンT7="X" のテーブル内のチェックボックスT7 の値をまとめて設定<br>
TDSIF(ドロップダウンT7="X",ARRAY(チェックボックスT7))


![2021-07-12_16h56_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/519fb483-8e19-a44d-81ad-dc7c76839641.png)

# まとめ
チェックボックスや複数選択項目は、値が複数持てるため、値の取得や設定にちょっとしたコツが必要ですが、計算式プラグインの配列関連の関数を使うと簡単に扱うことができます。