LoginSignup
1
0

More than 3 years have passed since last update.

Einstein Analytics - Integrationユーザが権限を持っていないオブジェクト項目一覧の取得

Posted at

背景

Einstein AnalyticsでSalesforceオブジェクトからデータセットを作成するときは、Integration Userという内部ユーザでオブジェクトを参照します。新規に作成したカスタム項目など、Integration Userが読むことができない項目はデータセットに取り込むことができません。データフローが失敗したり、データマネージャの接続の画面で接続済データの項目が選択できなかったりします。
問題が発生した時点でIntegration Userに項目の参照権限を与えて頂ければ問題ありません。
ただ、現在Integration Userが参照できない項目を一覧する機能がありませんので、この機能を作成しました。

ちなみに参照できる項目については以下のSOQLで得ることができます。

SELECT Field FROM FieldPermissions WHERE ParentId IN 
(SELECT Id FROM PermissionSet WHERE PermissionSet.Profile.Name = 'Analytics Cloud Integration User')

実行手順

デプロイ

コードはこちらで公開してます。
force-app/main/default/classes/AnalyticsUserPermCheck.cls が本体です。任意の方法でデプロイしてください。
設定 > Apexクラス > 新規 からコピペしていただいても構いません。

Testメソッドの実行

ここでは開発者コンソールを使用する方法を紹介します。

Debugログレベルの事前調整

全オブジェクトの全項目を調べるため、Debug Logがかなり大きくなり最大サイズに達してします可能性がありますので事前に必要なログだけ取得できるレベルに調整します。
DebugLogLevels.png
Debug > Change Log Levels から Change Log Levels の画面を開きます。General Trace Settings for you の DebugLevel Action をクリックし、ApexCode のみ DEBUG としておきます。ほかは NONE で構いません。

Testメソッドの実行

Test > New Run から AnalyticsUserPermCheck クラスを選択し、checkPermIntegrationUser メソッドにチェックを入れ、Selected Test でこのメソッドを選択して右下のRunを押下するとテストが実行されます。
RunTest.png

Debug Logの確認

実行が終わると、Logsのペインに実行時のタイムスタンプでログが作成されていることがわかりますので、これをクリックします。
DebugLog.png
上図のように Integration User がアクセスできない項目が一覧されます。(ログレベルを調整しなかった場合は、他のログに紛れて見にくいので DEBUG という文字列でフィルタしてください。)

1
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
1
0