ユーザマニュアル

【重要】年間サポートサービスプラン改定 プリザンター×MCPサーバ 「プリザンターをもっと活用するために」資料ダウンロード 「プリザンター入門」発売中!

2026/08/04

MANUAL

開発者向け機能:スクリプト:$p.apiGroupsGet

## 概要 AjaxのPOSTリクエストにより、グループ情報を取得します。 ## 構文 ### グループIDを直接指定して1件取得する場合 ##### JavaScript ``` $p.apiGroupsGet({ id: <グループID>, done: <任意の処理>, fail: <任意の処理>, always: <任意の処理> }); ``` ### グループIDを複数指定して取得する場合 ##### JavaScript ``` $p.apiGroupsGet({ data:{ View: { ColumnFilterHash: { GroupId: '[<グループIDを配列で指定>]' } } }, done: <任意の処理>, fail: <任意の処理>, always: <任意の処理> }); ``` ## 使用例 ### グループIDを直接指定して1件取得する場合 |パラメータ名|説明|必須| |:--|:--|:--:| |id|取得対象のグループID|○| |done|API通信成功|○| |fail|API通信失敗|-| |always|完了時|-| ##### JavaScript ``` $p.apiGroupsGet({ id: 123, done: function (data) { console.log(data); console.log('グループ情報の取得に成功しました。'); }, fail: function () { console.log('グループ情報の取得に失敗しました。'); }, always: function () { console.log('グループ情報の取得が完了しました。'); } }); ``` ### グループIDを複数指定して取得する場合 |パラメータ名|説明|必須| |:--|:--|:--:| |data|取得対象のグループIDを配列で複数指定|○| |done|API通信成功|○| |fail|API通信失敗|-| |always|完了時|-| ##### JavaScript ``` $p.apiGroupsGet({ data: { View: { ColumnFilterHash: { GroupId: '[100,101]' } } }, done: function (data) { console.log(data); console.log('グループ情報の取得に成功しました。'); }, fail: function () { console.log('グループ情報の取得に失敗しました。'); }, always: function () { console.log('グループ情報の取得が完了しました。'); } }); ``` ## サンプルコード <details> <summary>1. 複合条件判定によるボタン表示制御</summary> ##### 機能要件 1. 以下条件で、ボタンの表示を制御します。 <table border="1"> <thead> <tr> <th>部門(組織)</th> <th>役職(グループ)</th> <th>承認</th> <th>更新</th> </tr> </thead> <tbody> <tr> <td rowspan="3">営業部</td> <td>部長</td> <td>表示</td> <td>表示</td> </tr> <tr> <td>課長</td> <td>非表示</td> <td>表示</td> </tr> <tr> <td>一般社員</td> <td>非表示</td> <td>非表示</td> </tr> <tr> <td rowspan="3">開発部</td> <td>部長</td> <td>非表示</td> <td>表示</td> </tr> <tr> <td>課長</td> <td>非表示</td> <td>表示</td> </tr> <tr> <td>一般社員</td> <td>非表示</td> <td>非表示</td> </tr> </tbody> </table> 2. 部門、役職を以下のように定義します。 |種類|ID|組織/グループ| |---|---|:---:| |営業部|6|組織| |開発部|7|組織| |部長|3|グループ| |課長|2|グループ| ※一般社員は、グループ所属無しの想定 3. ボタン制御 - 承認:プロセスで設定 - 更新:標準の更新ボタン **実務での使いどころ** 承認や更新など、担当ロールごとに操作可能なアクションを画面上で出し分けたい場合 複数部門・複数役職の組み合わせでアクセス制御を行いたい場合 権限テーブルを別途持たずに、既存の組織・グループ構造だけで制御を完結させたい場合 ##### JavaScript ``` // ===== 設定 ===== const deptSales = 6; // 営業部 const deptDev = 7; // 開発部 const groupManager = 3; // 部長 const groupSecManager = 2; // 課長 const buttonRules = [ { id: 'Process_1', depts: [deptSales], groups: [groupManager], }, // 承認:営業部 × 部長 { id: 'UpdateCommand', depts: [deptSales, deptDev], groups: [groupManager, groupSecManager], }, // 更新:営業/開発 × 部長/課長 ]; // ===== エンジン:基本は触らない ===== const userId = $p.userId(); function matchesAny(ids, membershipMap) { return ids.length === 0 || ids.some((id) => membershipMap[id]); } // 組織判定: $p.apiUsersGet で自分自身のユーザーレコードを取得し、DeptId を直接比較 const getMyDeptId = () => { const dfd = $.Deferred(); $p.apiUsersGet({ id: userId, done: function (res) { dfd.resolve(res.Response.Data[0].DeptId); }, fail: function () { dfd.resolve(null); }, }); return dfd.promise(); }; // グループ判定: $p.apiGroupsGet のレスポンス内 GroupMembers("User,ID,フラグ"形式の配列)に // 自分のIDが含まれるかで判定(実機で確認済みの構造) const getGroupMembership = (groupId) => { const dfd = $.Deferred(); $p.apiGroupsGet({ id: groupId, done: function (res) { const members = res.Response.Data[0].GroupMembers || []; const isMember = members.some((m) => m.startsWith(`User,${userId},`)); dfd.resolve({ id: groupId, isMember: isMember }); }, fail: function () { dfd.resolve({ id: groupId, isMember: false }); }, }); return dfd.promise(); }; const groupIds = Array.from(new Set(buttonRules.flatMap((r) => r.groups))); const groupPromises = groupIds.map(getGroupMembership); // サーバースクリプト版の elements.DisplayType(描画前制御)と異なり、 // スクリプト版は画面表示後にボタンをjQueryでhide/showする $p.events.on_editor_load = function () { $.when(getMyDeptId(), ...groupPromises).done(function (myDeptId, ...groupResults) { const deptMembership = { [deptSales]: myDeptId === deptSales, [deptDev]: myDeptId === deptDev, }; const groupMembership = {}; groupResults.forEach((r) => { groupMembership[r.id] = r.isMember; }); buttonRules.forEach((rule) => { const visible = matchesAny(rule.depts, deptMembership) && matchesAny(rule.groups, groupMembership); visible ? $('#' + rule.id).show() : $('#' + rule.id).hide(); }); }); }; ``` </details>
code VS Codeで開発作業をもっとスマートに

スクリプト開発の効率を高めたい方に、Code Assistをご用意しています。

Code Assistの詳細はこちら →
account_tree 複雑な構成も、すっきり視覚化

サイト構成やデータのつながりを可視化し、把握しやすくします。

Site Visualizerの詳細はこちら →
TOP