Salesforceの非公開レポートはどこまで非公開なのか確認する

Salesforceの非公開レポートはどこまで非公開なのか確認する 機能

今回は非公開レポートの挙動を確認してみます。非公開レポートとはレポート保存フォルダを「非公開レポート」に指定したレポートのことです。非公開とはどの範囲にどの手段で非公開なのでしょうか。

非公開レポートフォルダへUIからアクセスする

基本的に自分が作成し「非公開レポート」フォルダに保存したレポートは、UI上から他のユーザがアクセスすることは出来ないようです。

システム管理者、標準プロファイル「標準ユーザ」を割り当てた一般ユーザA、一般ユーザBの計3名を用意し挙動を確認してみます。

1. 一般ユーザAでレポート「ユーザA作成:取引先レポート」を作成し非公開レポートフォルダに保存する

レポートを作成した一般ユーザA自身から見ると、非公開レポートフォルダに問題なく保存されていることが確認できました。

【一般ユーザA目線】


2.一般ユーザBで、上記レポート「ユーザA作成:取引先レポート」へアクセスする

ユーザBでは、ユーザAが作成し非公開レポートフォルダに保存したレポートへはアクセス出来ないことが確認できました。

【一般ユーザB目線】


3.システム管理者ユーザで、上記レポート「ユーザA作成:取引先レポート」へアクセスする

一般ユーザだけでなくシステム管理者でも、他のユーザが作成した非公開レポートへはアクセスできないことが確認できました。

※システム管理者は他のユーザへ代理ログインできるので、今回でいう一般ユーザAとして代理ログインすれば非公開レポートへアクセス出来るのは出来ますが今回の視点とはまた別のお話です。

【システム管理者目線】


ちなみにシステム管理者はオブジェクトマネージャーのカスタム項目で「使用場所」ボタンから項目の使用場所を確認でき、レポートで項目使用していればここで見れます。今回のレポートは取引先の「カスタム項目X」を含んでいるので「使用場所」ボタンでどう表示されるかチェックします。

カスタム項目Xが「ユーザA作成:取引先レポート」(=DevelopernameがA)で使用されると表示されるので、非公開レポートフォルダからレポート確認は出来ませんが「使用場所」ボタンからは自分が作っていない非公開レポートでも存在は知ることが出来ました。


非公開レポートフォルダのレポートを確認したい

システム管理者であっても非公開レポートフォルダとしてUI上から、他のユーザが作成した非公開レポートへアクセスできないことを確認しましたが、それでもシステム管理者は不要レポート整理などで確認したいシーンはあります。

ではどのような方法があるのでしょうか。

Salesforce公式ドキュメントで下記があったので試してみます。

・個人または非公開フォルダ内に保存されたレポートとダッシュボードを探す

https://help.salesforce.com/s/articleView?id=000383270&type=1

SOQLで”FROM Report”の後で”USING SCOPE allPrivate”を付けることで非公開レポートを一覧化できるようです。レポート自体の中身を見ることとは少し違いますが、どのような非公開レポートが存在するか一覧化できるのは助かります。

この公式ドキュメントに記載がある”SELECT Id FROM Report USING SCOPE allPrivate”を開発者コンソールで試してみます。システム管理者で開発者コンソールを立ち上げます。


画面左下の「QUERY Editor」に”SELECT Id FROM Report USING SCOPE allPrivate”と打ち込みExcuteボタンを押すと、1レポートがヒットしました。しかしSalesforceIDしか表示されないため分かりづらいです。


次にSOQLを少し書き換えて再実行してみます。IDのほかにレポート名、レポートフォルダ名、レポートAPI名、所有者ユーザをSelectに加えました。

SELECT Id, Name, folderName,developerName, Owner.Name FROM Report USING SCOPE allPrivate

すると本記事冒頭で一般ユーザAが作成した非公開レポートだと分かりました。システム管理者であってもユーザAが作成した非公開レポートを一覧表示することが出来ました。


データローダでもPeportオブジェクトに対して先ほどと同様にSOQLを書き込むと、開発者コンソールと同様に非公開レポートを1件エクスポートすることが出来ます。

SELECT Id, Name, folderName,developerName, Owner.Name FROM Report USING SCOPE allPrivate


まとめ

1.システム管理者であっても他のユーザが作成した非公開レポートは見ることが出来ない

2.ただしReport USING SCOPE allPrivateでSOQLを実行することで非公開レポート一覧化は可能

ということが分かりました。

1は下記のSalesforce Sharing and Visibilityアーキテクト試験の出題範囲にも含まれるほど大切な内容ですね。

今回は非公開レポートフォルダを確認しましたが、非公開ダッシュボードフォルダも同じ仕組みのようです。機会があればこの方法を活用してみたいと思います。

ちなみにレポートオブジェクトに保持している全カラムを出力、かつユーザレコードはIDではなく姓名を出力する際には下記で可能です。本記事で紹介した適宜USING SCOPEなど使用すれば出力するレポートのコントロールも可能です。

Select CreatedBy.Name, CreatedDate, Description, DeveloperName, FolderName, Format, Id, IsDeleted, LASTMODIFIEDBY.Name, LastModifiedDate, LastReferencedDate, LastRunDate, LastViewedDate, Name, NamespacePrefix, Owner.Name, SystemModstamp FROM Report

機能
Salesforceナレッジ
タイトルとURLをコピーしました