ファイル共有アーキテクチャがレコードに対してどのように機能するかご存知ですか? 



+ [Do You Know How the File Sharing Architecture Works on Records? Hop aboard!](https://automationchampion.com/2020/11/10/do-you-know-how-the-file-sharing-architecture-works-on-records-hop-aboard/)

Lightning Experience のファイルは、ユーザのすべてのファイル、文書、コンテンツ、添付ファイルを 1 つのシステムに統合し、管理とコラボレーションを容易にします。ファイルはより多用途であり、バージョン管理、ファイルの共同作業、オフラインでのファイル同期、共有設定、重要なファイルのフォローなどの優れた機能を提供します。また、Files Connect を使用して、Salesforce から直接外部ファイル システムに接続することもできます。たとえば、File Connect を使用して、Google Drive、Box、SharePoint などの外部データ ソースに Salesforce 内で直接接続できます。 

# Salesforce File の利点は次のとおりです。

- ファイルへのアクセスを制御する
- 最大2GBまでのファイルをアップロード
- 新しいバージョンをアップロードする
- Chatter フィードによるコラボレーション
- ファイルを追跡する機能
- ファイルプレビューページでプレビューする]

上記を読んだ後、  Gurukul on Cloud (GoC) のソリューション アーキテクトであるJason Herr は、新しく買収した Salesforce 組織に File を実装することを検討しています。彼は、ファイル共有が Salesforce のレコードでどのように機能するかについて詳しく知りたいと考えています。

# ファイル共有アーキテクチャがレコード上でどのように機能するかを理解しましょう

レコードにファイルを添付する機能は、Salesforce で共同作業を行い、組織化を維持するための強力な方法です。これにより、ユーザーは商談、取引先、またはケースに関する情報を必要な場所に保管できるようになります。 

ファイルをレコードにアップロードすると、その共有はさまざまなパラメータに応じて異なります。たとえば、レコード上のファイル共有は、Salesforce のさまざまな方法で制御できます。たとえば、ファイルのアクセスを非公開に設定できます。または、 組織レベルで レコード権限を継承するようにファイル共有を設定を有効にします。

数分かけて次のプロセス フロー図を確認し、完全に理解してください。この図は、さまざまな機能を使用してファイル共有を制限または開放する方法を説明しています。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/a3b42b0a-8d79-e547-6204-16acc6e28846.png)


ビジネスの使用例から始めて、さまざまなファイル共有要件にどのように対処できるかを理解しましょう。最終的には、Salesforce のレコードに対するファイル アクセスを制御する方法を明確に理解できるようになります。  

# ビジネスユースケースI

Jason Herr は 、Gurukul on Cloud (GoC) のソリューション アーキテクトです。彼は、レコードを編集できるユーザーがファイルも編集できるように、レコードへのファイル アクセスを効率化する方法を理解したいと考えています。

**上記のビジネス要件に対するソリューション**

これは、エンタープライズ ビジネスでは非常に一般的なシナリオです。ファイルへのアクセスをレコード アクセスによって制御できるように設定しましょう。これにより、ファイル共有 (手動または自動) のオーバーヘッドの一部が削除されます。デフォルトでは、新しい組織 (私は Developer Edition 組織でテストを実行しました) では、レコードにアクセスできるユーザは、そのレコード上のすべてのファイルを表示することもできます。これについては、前述のプロセス フロー図のステップ 1で説明されています。Jason のビジネス要件を解決するには、以下の手順に従ってください。 

1. [設定] | [設定]をクリックします。ホーム |  機能設定 | Salesforce ファイル | 一般設定。
2. [編集]をクリックします 。 
3. 次のスクリーンショットに示すように、 [ファイル アクセスをレコードに添付されたファイルに対してレコードで設定する] チェックボックスを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/8550b937-abf4-2701-656b-22c734a97739.png)

4/. 「保存」をクリックします。

今後、ファイルは次のようにレコード権限からの共有を継承します。

1. レコードへの読み取り/書き込み アクセス権を 持つユーザーは、  そのレコードに添付されているファイルへの共同作業者アクセス権を取得します。
2. レコードへの 読み取りアクセス権を 持つユーザーは、  そのレコードに添付されているファイルへの閲覧アクセス権を取得します。

# ビジネスユースケース II

ジェイソン・ハーは、 これまでの学習に非常に満足していました。彼は1時間の休憩を取って、昼食のためにパンダエクスプレスに行きました。ただし、Jason は Salesforce に生き続けています。そのため、パンダ エクスプレスに向かう途中、ジェイソンはまだビジネス ユース ケース I から学んだことについて考えていました。その後、突然、ビジネス ユーザーのブレンダ カスティージョが少し前に共有してくれた  ユース ケースを思い出しました 。

現在の Salesforce のファイル共有の設定方法では、 デルタ航空の商談にアクセスできる人は誰でも、その商談上のすべてのファイル にアクセスできます。次のスクリーンショットを参照してください。  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/098c6692-219b-9be5-c5eb-27b1a6d21092.png)


しかし、Brenda がオブジェクト上のどのファイルをユーザーと共有するかを制御したい場合はどうなるでしょうか ? 上のスクリーンショットでは、レコードに 2 つのファイルがあることがわかります。ブレンダの使用例は、ユーザーからMoM 10 月 19 日のファイルへのアクセスを取り消す機能を必要とすることです 。

**上記のビジネス要件に対するソリューション**

これも一般的な使用例です。ビジネス ユーザーが一部のファイルを記録上非公開にし、他のファイルへのパブリック アクセスを許可したい場合です。MoM 19th Oct ファイルを Opportunity オブジェクトでプライベートにしましょう 。以下の手順に従って、ブレンダのユースケースを解決できるようにしてください。 

1. Opportunity オブジェクトをクリックし てから、Opportunity Name (このシナリオでは – Delta Air Lines ) をクリックします。
2. 共有設定を変更する ファイルをクリックします(このシナリオでは、 MoM 10 月 19 日)。
3. [ファイルの詳細の編集]を選択します。
4. [レコード上のファイル プライバシー]ドロップダウン から、ファイルの可視性を制御するオプション (このシナリオでは[レコード上のプライベート] ) を選択します。 
5. 「保存」をクリックします。

今後、ユーザーがデルタ航空の商談レコードの詳細を表示するたびに、アクセス権のあるレコードにファイルが添付されている場合でも、MoM 19th Oct  という名前のファイルは表示されなくなります。プライバシー設定に関係なく、ファイル所有者には添付ファイルが表示されることに注意してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/0e58f585-0f71-20ad-f632-1030628bdc86.png)


上のスクリーンショットは、ファイル所有者と別のユーザーに表示されるファイルの数を示しています。これは、最初のフロー (ステップ – 6 および 7 ) で説明した内容です。ファイルの詳細を編集するときに [レコードのファイル プライバシー] オプションが表示されない場合は 、そのファイルがページ レイアウトに追加されていることを確認してください。管理者とファイル所有者のみが、レコードのファイル プライバシーの値を変更できます 。

# ビジネスユースケースⅢ

ジェイソン・ハーは ブレンダと会い、  上記の解決策がうまくいったことを確認します。ブレンダは満面の笑みを浮かべてジェイソンに感謝し、別のリクエストを彼に提示します。さて、ブレンダは、プライベートとしてマークしたファイルを他の人と共有する方法を知りたいと考えています。

**上記のビジネス要件に対するソリューション**

まあ、ブレンダは幸運です!! なぜなら、プライベート ファイルをユーザーと共有できるのは、ファイル所有者とシステム管理者だけだからです。さらに、ファイルの権限を閲覧者、共同作業者、またはアクセス権なしのいずれかに変更できるのは、所有者と管理者だけです。

以下の手順に従って、ブレンダにビジネス要件を満たす方法を教えます。 

1. Opportunityオブジェクトをクリックし てから、Opportunity Name (このシナリオでは – Delta Air Lines ) をクリックします。
2. 共有設定を変更する ファイルをクリックします(このシナリオでは、MoM 10 月 19 日)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/da0ce8f9-1348-7a47-a2ed-7033a4371029.png)

3\. [共有]をクリックすると、ポップアップが開きます。 
+ ファイルを共有する相手の名前を入力します。
+ 視聴者に与えたいファイル権限を選択します。

4\. 「保存」をクリックします。

# ビジネスユースケースIV

Jason Herr は、GurukulOnCloud のソリューション アーキテクトです 。 彼は次の要件を受け取りました – 商談が成約済みとしてマークされている場合、記録上で非公開としてマークされている場合でも、アカウント所有者が商談上のすべてのファイル にアクセスできることを確認してください。

# 上記のビジネス要件に対するソリューション

先に進む前に、  Salesforce のContentDocumentLink  (Salesforce CRM Content ドキュメントまたは Salesforce ファイルとその共有場所の間のリンクを表します)オブジェクトの機能を理解してください。 

|フィールド名	|詳細|
|:--------------|:---------------|
|ContentDocumentId	|ドキュメントのID 。|
|LinkedEntityId	|リンクされたオブジェクトの ID。Chatter ユーザ、グループ、レコード (カスタムオブジェクトを含む Chatter フィード追跡をサポートする任意のオブジェクト)、および Salesforce CRM Content ライブラリを含めることができます。 |
|ShareType	|ライブラリ内の共有ファイルのユーザーに付与される権限。|

Summer'22 リリースの時点では 、 ContentVersion、ContentDocument 、またはContentDocumentLinkオブジェクトでSalesforce FlowまたはApexを開始できません。唯一の解決策は、Apex トリガーを使用することです。

しかし、私たちのシナリオは異なり、Opportunity オブジェクトから始まります。このようなシナリオでは、Lightning Flow を使用して自動化できます。次のスクリーンショットに示すように、  ConetntDocumentLinkオブジェクトにレコードを挿入する必要があります 。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/233b0364-e41c-052b-8d5f-258a3a99afbe.png)


上記の要件に対する段階的な解決策については、別の Lightning Flow ブログで説明する予定です。 

レコードに対するファイル アクセスを制御したり、アクセスを公開したりする方法については、ある程度理解できたと思います。