0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データローダーを使って、キューと公開グループに所属するロールを出してみた

Last updated at Posted at 2025-04-07

このドキュメントは何

SalesforceのロールとグループメンバーとグループをデータローダでExportして、
Excelでこねこねしてキューや公開グループに所属するロール一覧を作成しました。備忘として手順を記載しておきます。
公開グループのメンバーにはロールや公開グループを含めることができますが、一覧を出そうとするとかえって少し手間でした。

背景

ロール変更の影響調査のため、どのキューや公開グループにどのロールが所属しているか知りたかった。

ちなみに、ロールメンバーの一覧はUserRoleオブジェクトとUserオブジェクトで出せます。
UserRoleのIdとUserのUserRoleIdがキーになります。

調査

以下のhelpを見てみると、どうやらキューはグループオブジェクト、キューメンバーはグループメンバーオブジェクトで管理されているらしい。

レポートを使用したキューメンバーの監視

help通りにレポートタイプ、レポートも作ってみたが、キューが正しく表示されない。そのため、データローダでデータをExportして、リストを突合してキューや公開グループに所属するロール一覧を作成してみることにした。

手順

  • データローダーでExport
    • グループ(Group)オブジェクトの全項目、全レコードをExport
    • 同様にグループメンバー(GroupMember)、ロール(UserRole)オブジェクトの全項目、全レコードを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桁の文字列
UserRole.Name ロールオブジェクトのName項目 ロールの表示ラベル
  • グループメンバーオブジェクトのExportデータをもとにして、必要な列を他オブジェクトのシートからVLOOKUPなどで引っ張って追加します。上表の太字の項目が追加する列です。

    1. Group.Name
      1. GroupMember.GroupIdとGroup.Idが一致するグループオブジェクトのName項目の値を持ってきます。
    2. Group.Type
      1. GroupMember.GroupIdとGroup.Idが一致するグループオブジェクトのType項目の値を持ってきます。
    3. Group.種別
      1. 個人的に英語のままだと分かりずらかったのでGroup.Type列を日本語に置き換えました。Regularは公開グループ、Queueはキューに置き換えました。
    4. UserRole.Name
      二段階加工が必要になります。
      1. 前段階として、グループオブジェクトのシートにUserRole.Nameという列を追加します。
      Group.RelatedIdとRole.Idが一致するロールオブジェクトのName項目を引っ張ってきます。
      2. これまで作成してきたグループメンバーをコピーしたリストに戻ります。
      UserRole.Name列にGroupMember.UserOrGroupIdとGroup.Idが一致するUserRole.Name項目の値を持ってきます。
      補足:Group.Name項目にはキューと公開グループの表示ラベルしか入らないようで、ロールオブジェクトから値を引っ張ってこないといけませんでした。
      Type=Queue、RegularのNameには値が入っていましたが、Roleから始まる文字列の場合はNameは空欄となっていました。
  • これで、キューや公開グループに所属するロール一覧を出すことができました。

    • 今回はロールの確認さえできればOKだったのでこれで終わりですが、キューや公開グループに所属するロール以外のメンバー(ユーザーやキュー、公開グループ)を出したい場合は、UserOrGroupIdをキーにユーザーオブジェクトやグループオブジェクトから必要な情報を追加すればよさそうです。

知見

  • キューはGroupオブジェクトで管理しているようでした。
  • ロールもGroupオブジェクトで管理しているようでした。(グループオブジェクトのTypeを分けて管理している様子)
  • Groupオブジェクトは公開グループ以外にも広めのものを管理するオブジェクトのようです。
    グループのメンバーとしてキューやロールなどいろいろなものを選べるので、そうしておかないと構造として難しいのかな。
  • GroupMemberオブジェクトはGroupと所属するユーザーやロールをつなぐ中間オブジェクト。GroupIdがグループの参照関係で、UserOrGroupIdがユーザーやロールの参照関係となっている
  • 公開グループはGroupオブジェクトで管理していて、ChatterグループはCollaborationGroupオブジェクトらしい
  • キュー(Queue)オブジェクトはないようだった。キューの sObject(QueueSobject)というオブジェクトがある。
    結局使わなかったのでなんなのかよく分かっていないです。

リファレンス

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?