$p.groupIds
概要¶
所属するグループのIDリストを取得する関数について説明します。ログインユーザが所属するグループのIDリストが取得できます。
構文¶
使用例¶
(1)アカウント管理者でログインし、テーブルを作成します。
(2) スクリプトを新規作成し、以下のスクリプトの内容を記載します。出力先には一覧をチェックして更新します。
JavaScript¶
$p.setMessage('#Message', JSON.stringify({
Css: 'alert-success',
Text: '所属するグループのIDは [' + $p.groupIds().join(', ') + '] です。'
}));
(3) 一覧画面に遷移してください。
サンプルコード¶
Note
コード内の【 ... 】は適宜修正してください。
1. 所属グループに応じて選択肢を絞り込む
新規作成・編集画面を開いた際に、ログイン中のユーザが所属しているグループに応じて、プルダウン項目(分類項目)の選択肢を絞り込みます。
対応表にないグループのユーザには選択肢は空白となります。複数グループを兼務しているユーザには、該当する全グループの選択肢をあわせて(重複なく)表示します。
実務での使いどころ¶
営業部のユーザには営業関連の選択肢だけ、開発部のユーザにはマニュアル・サンプルコード関連の選択肢だけ、といったように、グループごとに入力してよい選択肢を分けたい場面に使えます。
Pleasanterには「選択肢一覧のフィルタ(ColumnFilterExpressions)」というノーコード機能がありますが、これは他の項目に入力された値を条件に絞り込む機能であり、ログイン中のユーザ自身の所属グループを条件にはできません。
ログインユーザ自身の所属グループを条件にした絞り込みは、$p.groupIds()を使うクライアントスクリプトで実現できます。
事前準備¶
- プルダウン項目(分類項目)を1つ用意し、選択肢一覧に絞り込み対象の選択肢をすべて登録します。
- 「テーブルの管理 > 項目」タブで対象の分類項目(例:分類A)を選択します。
- 「選択肢」欄に、改行区切りで選択肢を入力します(例:営業資料 / 提案書 / マニュアル / サンプルコード)。
選択肢設定(分類A)¶
1. 対象ユーザをグループに所属させておきます。
Note
本サンプルでは「営業部」「開発部」の2グループを使用します。
- スクリプトを登録します。
- 「テーブルの管理 > スクリプト」タブで「新規作成」を選択します。
| 設定項目 | 設定値 |
|---|---|
| タイトル | 任意の名前(例:所属グループによる選択肢絞り込み) |
| スクリプト | 下記サンプルコードを貼り付け |
| 出力先 | 「全て」のチェックを外し、「編集」にチェック(「編集」は新規作成画面にも適用されます) |
const COLUMN_NAME = 'ClassA';
const GROUP_OPTION_MAP = {
【グループID_1】: ['営業資料', '提案書'], // 営業部
【グループID_2】: ['マニュアル', 'サンプルコード'] // 開発部
};
$p.events.on_editor_load = function () {
// ログイン中のユーザが所属する全グループIDを取得する(配列)
const groupIds = $p.groupIds();
// 対応表のうち、所属している全グループの許可選択肢を集約する(グループ兼務を考慮し、重複は除く)
const allowedValues = Object.keys(GROUP_OPTION_MAP)
.map(Number)
.filter(function (groupId) {
return groupIds.indexOf(groupId) !== -1;
})
.reduce(function (values, groupId) {
return values.concat(GROUP_OPTION_MAP[groupId]);
}, [])
.filter(function (value, index, values) {
return values.indexOf(value) === index;
});
// 分類Aの要素(プルダウン)を取得し、許可されていない選択肢を削除する
const $select = $p.getControl(COLUMN_NAME);
$select.find('option').each(function () {
const value = $(this).val();
// 未選択用の空の選択肢は残す
if (value !== '' && allowedValues.indexOf(value) === -1) {
$(this).remove();
}
});
};
