共有グループに含まれるユーザのIdを取得する
共有グループのIdを受け取って、
その共有グループに含まれるユーザのIdを返すメソッド。
ユーザだけでなく共有グループも含まれている可能性があるため、再帰的に記述する。
/** * グループメンバーの取得 */ public static Set<id> GetUserIdsFromGroup(Id groupId){ Set<Id> result = new Set<Id>(); String userType = Schema.SObjectType.User.getKeyPrefix(); String groupType = Schema.SObjectType.Group.getKeyPrefix(); // 指定のグループのグループメンバーを取得し、ループ for (GroupMember m : [Select Id, UserOrGroupId From GroupMember Where GroupId =: groupId]) { // グループメンバーがUserの場合、resultにadd if (((String)m.UserOrGroupId).startsWith(userType)) { result.add(m.UserOrGroupId); // グループメンバーがGroupの場合、再帰呼び出ししてUser単位まで処理してresultにadd } else if (((String)m.UserOrGroupId).startsWith(groupType)) { result.addAll(GetUSerIdsFromGroup(m.UserOrGroupId)); } } return result; }