開発者向け機能:サーバスクリプト:columns.AddChoiceHash
## 概要
「columnsオブジェクト」の「AddChoiceHashメソッド」です。[サーバスクリプト](/ja/manual/table-management-server-script)で[項目](/ja/manual/table-management-what-is-items)の[選択肢一覧](/ja/manual/table-management-choices-text)を動的に設定することができます。AddChoiceHashを複数回呼ぶことによって、選択肢を追加します。1回目のAddChoiceHashが呼ばれると[サーバスクリプト](/ja/manual/table-management-server-script)の実行前にセットされていた選択肢は全てクリアされます。
## 制限事項
1. [分類項目](/ja/manual/table-management-class)のみ使用できます。
## 前提条件
1. 対象となる項目の選択肢一覧に、選択肢が1つ以上設定されている必要があります。
1. サーバスクリプトの[条件](/ja/manual/server-script-conditions)が「画面表示の前」、「行表示の前」の場合に有効となります。
## 構文
```
columns.[カラム名].AddChoiceHash(key, value);
```
## パラメータ
パラメータvalueを省略した場合、AddChoiceHash(key, key)と解釈されます。
|No|パラメータ|型|必須|概要|
|:--|:--|:-:|:-:|:--|
|1|key|object|○|キー|
|2|value|object| - |値|
## 戻り値
戻り値はありません。
## 使用例
下記の例では、分類AにTEST1~TEST5までの選択肢一覧を設定します。
### valueを指定した場合
##### JavaScript
```js
for (let i = 1; i <= 5; i++) {
columns.ClassA.AddChoiceHash(i, 'TEST' + i);
}
```
この場合、[分類項目](/ja/manual/table-management-class)の[選択肢一覧](/ja/manual/table-management-choices-text)を以下のように指定した場合と同じ表示結果を得られます。

### valueを省略した場合
##### JavaScript
```js
for (let i = 1; i <= 5; i++) {
columns.ClassA.AddChoiceHash('TEST' + i);
}
```
この場合、[分類項目](/ja/manual/table-management-class)の[選択肢一覧](/ja/manual/table-management-choices-text)を以下のように指定した場合と同じ表示結果を得られます。

## サンプルコード
<details>
<summary>1. 選択肢を動的に制御</summary>
ある項目の入力値に応じて、選択肢を動的に制御します。
このサンプルでは、分類Aに指定された値に応じ、スクリプト内で定義した条件にあわせ分類Bの選択肢を設定しています。
##### テーブル設定
分類Aの設定

分類Bの設定

##### 未選択状態
分類Bには何も表示されない

##### 選択状態
分類Aの選択に合わせ選択肢が表示される


##### JavaScript
```js
// 1) 選択肢セット(共通定義)
const choiceSets = {
G1: [
{ key: 1, value: '選択肢1' },
{ key: 2, value: '選択肢2' },
{ key: 3, value: '選択肢3' },
{ key: 4, value: '選択肢4' },
],
G2: [
{ key: 2, value: '選択肢2' },
{ key: 4, value: '選択肢4' },
],
G3: [
{ key: 4, value: '選択肢4' },
{ key: 5, value: '選択肢5' },
],
};
// 2) 選択肢セットキー
const classAToSetKey = {
1: 'G1',
2: 'G2',
3: 'G3',
4: 'G3',
};
// 3) メイン処理
// ClassB の選択肢をクリアしてから、ClassA に応じた選択肢をセット
columns.ClassB.ClearChoiceHash();
const setKey = classAToSetKey[model.ClassA];
const choices = setKey && choiceSets[setKey] ? choiceSets[setKey] : [];
for (const { key, value } of choices) {
columns.ClassB.AddChoiceHash(key, value);
}
```
</details>
<details>
<summary>2. グループ・組織に所属するメンバーを選択肢に設定する</summary>
グループ、組織を選択肢として設定しておき、その選択にあわせ所属するメンバーを別の選択肢項目へ設定します。
このサンプルでは、以下のように制御しています。
・分類A:グループ → 所属メンバーを分類Bに設定
テーブルの設定は以下のとおり
分類A

分類B

・分類C:組織 → 所属メンバーを分類Dに設定
テーブルの設定は以下のとおり
分類C

分類D

##### JavaScript
```js
// グループ所属メンバーを取得して、選択肢にセット
const group = groups.Get(Number(model.ClassA));
if (group) {
columns.ClassB.ClearChoiceHash();
const members = group.GetMembers();
for (const member of members) {
// GetMembersではUserIdしか取れないので、users.Getでユーザ情報を取得
const user = users.Get(member.UserId);
columns.ClassB.AddChoiceHash(user.UserId, user.Name);
}
}
// 部署所属メンバーを取得して、選択肢にセット
const dept = depts.Get(Number(model.ClassC));
if (dept) {
columns.ClassD.ClearChoiceHash();
const members = dept.GetMembers();
for (const member of members) {
columns.ClassD.AddChoiceHash(member.UserId, member.Name);
}
}
```
</details>
## 対応バージョン
|対応バージョン|内容|
|:--|:--|
|1.2.4.0 以降|機能追加|
|1.4.23.0 以降|パラメータvalueを省略可能に|
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/table-management-what-is-items">テーブルの管理:項目</a><span>2025/10/24 up</span></li>
<li><a href="/ja/manual/table-management-class">テーブルの管理:項目:分類</a><span>2025/12/09 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-choices-text">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧</a><span>2025/11/27 up</span></li>
<li><a href="/ja/manual/table-management-choices-text-depts">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:組織</a><span>2023/04/25 up</span></li>
<li><a href="/ja/manual/table-management-choices-text-groups">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:グループ</a><span>2023/04/25 up</span></li>
<li><a href="/ja/manual/table-management-choices-text-users">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:ユーザ</a><span>2023/04/25 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2026/02/10 up</span></li></ul></article>
<ul><li><a href="/ja/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2025/11/27 up</span></li>
<li><a href="/ja/manual/server-script-conditions">開発者向け機能:サーバスクリプト:条件</a><span>2026/02/09 up</span></li></ul></article>
<ul><li><a href="/ja/manual/faq-condition-mode-range">FAQ:プロセスなどの条件タブで数値や日付の条件を範囲指定したい</a><span>2024/05/29 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />


