システム管理者の独り言

元営業の素人がsalesforceシステム管理者になったので備忘録を。。

レポートのエクスポート権限が割り当てられたユーザ

ずいぶん投稿してなかった。

ちょうど「レポートのエクスポート権限」がどのユーザに割り当てられてるか調べる依頼があったのでメモ。。

場所

プロファイルごとに権限のセットができる

f:id:iwaoLog:20171129142706p:plain
レポートのエクスポート
つまり、各プロファイルごとにチェックがあるか確認して、「このプロファイルに属するユーザの参照」をして一つ一つ調べていけばできると。。

一度に確認できないか?

ひとつずつ調べるのは面倒な作業だし、何かできないか調べてみる。

developer.salesforce.com

この辺を調べてみたところ、「レポートのエクスポート」の権限を指定する名称がわからなかったので、さらに調べる。

developer.salesforce.com

「PermissionsPermissionName」というのを見つけた。ところが、

使用可能な権限のリストを取得するには、describeSObjects() を使用します。

とあったので、下記で取得。

    Map<String, Schema.SObjectField> fieldMap = Schema.SObjectType.PermissionSet.fields.getMap();
    System.debug(fieldMap.size());
    for(String s : fieldMap.keyset()){
        System.debug(fieldMap.get(s));
    }

194件あったので、それっぽいのがないか確認したところ、 ようやく「PermissionsExportReport」と判明したので、SOQLクエリを実行

SELECT Id, AssigneeID, Assignee.Name, Assignee.IsActive, PermissionSet.Name
FROM PermissionSetAssignment
WHERE PermissionSet.PermissionsExportReport=TRUE AND Assignee.IsActive = TRUE

AssigneeがUserオブジェクトを指すので、有効ユーザのみに絞り込んで、権限をもつユーザが取得できました。 思った以上に時間かかったので、ひとつずつ調べた方が早かったかも。。。