Salesforceの共有ルールについて分かりやすく解説してみた

こんにちは
本橋孝昭です

今回はSalesforceの共有ルールについて解説してみます


今回の内容は動画でも公開しています

https://www.youtube.com/watch?v=kQK-Pq9VdyA

<iframe width="560" height="315" src="https://www.youtube.com/embed/kQK-Pq9VdyA?si=L_XehALlEKC-1gmT" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

これを見れば
# ・Salesforceの共有ルールってどういうときに使うの？
# ・Salesforceの共有ルールってどういう設定ができるの？


が分かります。
さあ、まずは共有ルールの使い方について解説しましょう


# ・Salesforceの共有ルールってどういうときに使うの？

共有ルールはSalesforceの共有設定が「公開/参照・更新可能」ではないときにはじめて使う設定です。
つまり
・オブジェクトの共有設定で非公開の場合で特定のユーザーが特定のSalesforceのレコードが参照できない状態になっているので参照させるようにしたい
・オブジェクトの共有設定で非公開の場合で特定のユーザーが特定のSalesforceのレコードが参照できない状態になっているので参照および編集させるようにしたい
・オブジェクトの共有設定で参照のみの場合で特定のユーザーが特定のSalesforceのレコードが編集できない状態になっているので編集させるようにしたい


という場合に共有ルールを使います

すでにそのオブジェクトが「公開/参照・更新可能」の場合は共有ルールでの権限付与を行うことはできないです
（もしもオブジェクトが「公開/参照・更新可能」の場合で特定のユーザがレコードの閲覧や編集ができなくと困っている　場合はそのユーザのプロファイル（または権限セット）でオブジェクトの閲覧権限や編集権限の付与漏れが発生していると思います）

なお、よくある？共有ルールの誤解について解説します

## Q 共有ルールよくある誤解１　共有ルールを設定すれば必ずそのユーザは参照（または編集）は可能なの？

A プロファイル（または権限セット）によってはそのユーザは参照（または編集）はできないこともあります

例として、以下のプロファイルが割り当ているユーザの場合、オブジェクト「test01」は参照権限がないため共有ルールで「参照可能」と設定してもtest01 オブジェクトのレコードを参照することはできません
![プロ１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/78ee23b8-7438-2e88-442d-73cb95ab8b09.png)

あくまでも共有ルールで付与される権限は
・プロファイル（または権限セット）により付与される権限を越えることはできません

## Q 共有ルールよくある誤解２　共有ルールを設定すればアクセスの制限をすることは可能か？

A 共有ルールはアクセスの拡張は出来るがアクセスの制限はできません（例えば特定のユーザにレコードの閲覧が現在可能だが閲覧させないようにする　という設定はできません）
アクセスの制限をしたい場合、共有設定の変更などを検討してください


なお、プロファイル（および権限セット）での権限設定や共有設定についてはこちらの記事にも解説してますのでここまでで「なんだかよくわからなくなってきたな」という方はぜひこちらを見てみてください

https://qiita.com/Takaa/items/dae3107d096510af1f74


# ・Salesforceの共有ルールってどういう設定ができるの？
共有ルールを設定するためには3つの考え方が必要です

## 1.共有するレコードはどのようなルールを設定するか
## 2. 共有先はどのようなユーザに共有するか
## 3  その共有先のユーザのアクセス権の設定は「参照のみ」か「参照・更新」か

1つずつ見ていきましょう

## 1.共有するレコードはどのようなルールを設定するか
この共有するレコードのルールは大きく２つのルールタイプがあります

### ルール1 レコードの所有者に基づく
### ルール2 条件に基づく

それぞれのルールを見ましょう

### ルール1 レコードの所有者に基づく
レコードの所有者に基づく　設定は３つの設定が可能です

#### 所有者の所属する　ロール
#### 所有者の所属する　ロール&下位ロール
#### 所有者の所属する　公開グループ

さて、急にロールとか言われてもイメージしにくいので、ここで株式会社TAKAAKI という架空の会社の組織図を使って説明します


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/a290b237-739d-8f24-30b4-4ca549c38b82.png)

#### 所有者の所属する　ロール
例えば　所有者の所属する　ロールを「東日本総務部」と設定すれば、その
ロール「東日本総務部」に所属する伊藤さんや森さんがルールの対象になります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/57c70f60-337a-94db-c62f-c0a1fe52c121.png)

#### 所有者の所属する　ロール&下位ロール
例えば　所有者の所属する　ロールを「東日本総務部」と設定すれば、その
ロール「東日本総務部」に所属する伊藤さんや森さんおよびその下位ロールに所属する
中村さん、山本さん、加藤さん、佐々木さん所有のレコードがルールの対象になります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/ba68d63c-2463-14c3-ef13-b2310b433618.png)


#### 所有者の所属する　公開グループ
あらかじめ特定の公開グループを作成することで所属するロールに関係なくルール適応が可能です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/3c444f88-809c-c3cc-907a-e8ae11d0327b.png)

### ルール2 条件に基づく
レコードで○○項目の数値が〇以上　パーセントの項目が〇％　のような条件に基づくルール設定も可能です
この場合、ロールに関係なく条件にも続くルールの作成が可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/11f1b7b9-7183-9093-b142-78b9b0abc260.png)


## 2. 共有先はどのようなユーザに共有するか

さて共有したいレコードの条件が整ったところで次はそのレコードを誰に共有するか　の設定をします

共有先の設定方法は3つあります

#### 共有先　ロール

特定のロールに所属するすべてのユーザに共有させることが可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/7b769db8-2503-e7f1-d0c7-7d53197009d7.png)

#### 共有先　ロール&下位ロール

特定のロール&下位ロールに所属するすべてのユーザに共有させることが可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/759f691c-6662-2575-5f6e-55f2ee7946de.png)

#### 公開グループ

特定の公開グループに所属するすべてのユーザに共有させることが可能です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531631/db24d0f8-9527-154c-8422-d893aa8f818b.png)


## 3  その共有先のユーザのアクセス権の設定は「参照のみ」か「参照・更新」か
最後にアクセス権の付与の選択です
・「参照のみ」（閲覧のみ）
・「参照・更新」（閲覧および編集可能）
について設定します


以上で共有ルールの作成は完了です

今回は共有ルールについて解説しました
Salesforceは共有の設定部分が結構複雑なので、何かリクエストがあればまた記事を作成したいと思います。