コンテンツにスキップ

$p.groupIds

概要

所属するグループのIDリストを取得する関数について説明します。ログインユーザが所属するグループのIDリストが取得できます。

構文

$p.groupIds()

使用例

(1)アカウント管理者でログインし、テーブルを作成します。
(2) スクリプトを新規作成し、以下のスクリプトの内容を記載します。出力先には一覧をチェックして更新します。

JavaScript

$p.setMessage('#Message', JSON.stringify({
    Css: 'alert-success',
    Text: '所属するグループのIDは [' + $p.groupIds().join(', ') + '] です。'
}));

(3) 一覧画面に遷移してください。

サンプルコード

Note

コード内の【 ... 】は適宜修正してください。

1. 所属グループに応じて選択肢を絞り込む

新規作成・編集画面を開いた際に、ログイン中のユーザが所属しているグループに応じて、プルダウン項目(分類項目)の選択肢を絞り込みます。
対応表にないグループのユーザには選択肢は空白となります。複数グループを兼務しているユーザには、該当する全グループの選択肢をあわせて(重複なく)表示します。

実務での使いどころ

営業部のユーザには営業関連の選択肢だけ、開発部のユーザにはマニュアル・サンプルコード関連の選択肢だけ、といったように、グループごとに入力してよい選択肢を分けたい場面に使えます。
Pleasanterには「選択肢一覧のフィルタ(ColumnFilterExpressions)」というノーコード機能がありますが、これは他の項目に入力された値を条件に絞り込む機能であり、ログイン中のユーザ自身の所属グループを条件にはできません。
ログインユーザ自身の所属グループを条件にした絞り込みは、$p.groupIds()を使うクライアントスクリプトで実現できます。

事前準備

  1. プルダウン項目(分類項目)を1つ用意し、選択肢一覧に絞り込み対象の選択肢をすべて登録します。
    1. 「テーブルの管理 > 項目」タブで対象の分類項目(例:分類A)を選択します。
    2. 「選択肢」欄に、改行区切りで選択肢を入力します(例:営業資料 / 提案書 / マニュアル / サンプルコード)。

選択肢設定(分類A)

営業資料
提案書
マニュアル
サンプルコード

1. 対象ユーザをグループに所属させておきます。

Note

本サンプルでは「営業部」「開発部」の2グループを使用します。

  1. スクリプトを登録します。
    1. 「テーブルの管理 > スクリプト」タブで「新規作成」を選択します。
設定項目 設定値
タイトル 任意の名前(例:所属グループによる選択肢絞り込み)
スクリプト 下記サンプルコードを貼り付け
出力先 「全て」のチェックを外し、「編集」にチェック(「編集」は新規作成画面にも適用されます)
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();
        }
    });
};

実行結果(営業部所属ユーザの場合)

分類Aの選択肢: 営業資料, 提案書

実行結果(開発部所属ユーザの場合)

分類Aの選択肢: マニュアル, サンプルコード

実行結果(営業部・開発部を兼務しているユーザの場合)

分類Aの選択肢: 営業資料, 提案書, マニュアル, サンプルコード

実行結果(いずれのグループにも該当しないユーザの場合)

分類Aの選択肢: (なし)