LoginSignup
3
2

More than 3 years have passed since last update.

【備忘録】Salesforceで他ユーザ所有のファイル(ContentDocument)の一括削除

Last updated at Posted at 2020-08-04

Salesforceでのファイル(ContentDocument)の削除

 自分以外のユーザが所有しているファイル(ContentDocument)の削除にコツが必要だったので、備忘録として残しておきます。

結論

 プロファイルで「すべてのファイルをクエリ」をオンにすれば、他ユーザ所有のファイルを含めて開発者コンソールなどから参照できる。

経緯

 DevSandBoxやDevProSandBoxで組織のファイルストレージが一杯になり、レコードの作成が出来なくなりました。動作検証で様々なユーザでファイルをアップロードしており、各ユーザで削除するのは手間なのでシステム管理者で一気に削除しようと思いました。
1.png
2.png
3.png

開発者コンソールでシステム管理者(システム管理太郎)でファイルをクエリしてみたところ
image.png

手動共有されていない他ユーザ所有のファイルが表示されない???:dizzy_face:

ただ、ファイルのIdからファイルの詳細ページにアクセスすると表示されるため、アクセス権限はあるみたい。
(標準システム管理者プロファイルなので、すべてのレコード参照の権限がある)
image.png

どうやら直接共有されていないファイルは、「すべてのレコードを参照」権限があっても開発者コンソールなどからのSOQLでは、参照することが出来ないという仕様があるそうです。
https://developer.salesforce.com/docs/atlas.ja-jp.object_reference.meta/object_reference/sforce_api_objects_contentversion.htm

解決策

 上記の解決策として、「すべてのファイルをクエリ」という権限があります。設定手順は下記の通り。
 1.標準のシステム管理者プロファイルをコピーしたカスタムプロファイルを作成する。
 2.上記プロファイルで「すべてのファイルをクエリ」をオンにする
 (システム管理者権限セクションにあります。)
 3.Salesforceユーザのプロファイルを上記のプロファイルに変更する
 (他ユーザでないとプロフィルの変更ができない)
 4.開発者コンソールなどから削除する
 
 このプロファイルを設定することで、すべてのファイルを参照することが出来ました。
4.png
5.png

6.png

まとめ

 コミュニティユーザのアップロードしたファイルで不要になったファイルを削除するときなどは、この方法でないとなかなか手間がかかると思います。ただし、消してはならないファイルを消してしまうことのないように、「すべてのファイルをクエリ」権限は慎重に扱って(普段はオフにしておくなどして)ください。

3
2
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
3
2