このドキュメントは何
SalesforceのロールとロールメンバーとグループをデータローダでExportして、
Excelでこねこねしてキューや公開グループに所属するロール一覧を作成しました。備忘として手順を記載しておきます。
背景
ロール変更の影響調査のため、どのキューや公開グループにどのロールが所属しているか知りたかった。
調査
以下のhelpを見てみると、どうやらキューはグループオブジェクト、キューメンバーはグループメンバーオブジェクトで管理されているらしい。
help通りにレポートタイプ、レポートも作ってみたが、キューが正しく表示されない。そのため、データローダでデータをExportして、リストを突合してキューや公開グループに所属するロール一覧を作成してみることにした。
手順
- データローダーでExport
- グループ(Group)オブジェクトの全項目、全レコードをExport
- 同様にグループメンバー(GroupMember)、ロール(Role)オブジェクトの全項目、全レコードをExport
- Exportしたデータを加工してキューや公開グループに所属するロール一覧を作成
作成するリストに必要な列は以下の通りです。
項目 | 説明 | 記述例 |
---|---|---|
GroupMember.Id | グループメンバーオブジェクトのId | 「011」から始まる18桁の文字列 |
GroupId | グループオブジェクトの参照項目 | 「00G」から始まる18桁の文字列 |
Group.Name | グループのName項目。Group.TypeがRegularかQueueの場合には値が入る | 公開グループやキューの表示ラベル |
Group.Type | グループの種別項目。公開グループ、キューなど。Regularが公開グループのこと。 | Regular, Queue, RoleAndSubordinatesInternalなど |
Group.種別 | 英語のままだと分かりずらかったのでGroup.Type列を日本語に置き換えました。Regularは公開グループ、Queueはキュー | レギュラー、キューなど |
GroupMember.UserOrGroupId | ユーザーかグループオブジェクトの参照項目 | 「00G」(公開グループ)または「005」(ユーザー)から始まる18桁の文字列 |
Role.Name | ロールオブジェクトのName項目 | ロールの表示ラベル |
- グループメンバーオブジェクトのExportデータをもとにして、必要な列を他オブジェクトのシートからVLOOKUPなどで引っ張って追加します。上表の太字の項目が追加する列です。
- Group.Name
- GroupMember.GroupIdとGroup.Idが一致するグループオブジェクトのName項目の値を持ってきます。
- Group.Type
- GroupMember.GroupIdとGroup.Idが一致するグループオブジェクトのType項目の値を持ってきます。
- Group.種別
- 個人的に英語のままだと分かりずらかったのでGroup.Type列を日本語に置き換えました。Regularは公開グループ、Queueはキューに置き換えました。
- Role.Name
1. ちょっとややこしく、二段階加工が必要になります。
2. 前段階として、グループオブジェクトにRole.Nameという列を追加します。
グループオブジェクトのName項目には、ロールの表示ラベルが入らないようです。Type項目の値がRoleから始まる文字列の場合はNameが空欄でした。(ちなみにType=Queue、RegularのNameには値が入っていました。)
Group.RelatedIdとRole.Idが一致するロールオブジェクトのName項目を持ってきます。
3. 続いて、これまで作成してきたリストに戻り、Role.Name列にGroupMember.UserOrGroupIdとGroup.Idが一致するRole.Name項目の値を持ってきます。
- Group.Name
- これで、キューや公開グループに所属するロール一覧を出すことができました。
- 今回はロールの確認さえできればOKだったのでこれで終わりですが、ロール以外にキューや公開グループに所属するロール以外のメンバー(ユーザーやキュー、公開グループ)を出したい場合は、UserOrGroupIdをキーにユーザーオブジェクトやグループオブジェクトから必要な情報を追加すればよさそうです。
知見
- キューはGroupオブジェクトで管理しているようでした。
- ロールもGroupオブジェクトで管理しているようでした。(グループオブジェクトのTypeを分けて管理している様子)
- Groupオブジェクトは公開グループ以外にも広めのものを管理するオブジェクトのようです。
グループのメンバーとしてキューやロールなどいろいろなものを選べるので、そうしておかないと構造として難しいのかな。 - GroupMemberオブジェクトはGroupと所属するユーザーやロールをつなぐ中間オブジェクト。GroupIdがグループの参照関係で、UserOrGroupIdがユーザーやロールの参照関係となっている
- 公開グループはGroupオブジェクトで管理していて、ChatterグループはCollaborationGroupオブジェクトらしい
- キュー(Queue)オブジェクトはないようだった。キューの sObject(QueueSobject)というオブジェクトがある。
結局使わなかったのでなんなのかよく分かっていないです。