ContentDistribution
サポートされているコール
create()、delete()、describeSObjects()、query()、retrieve()、undelete()、update()、upsert()
特別なアクセスルール
- コンテンツ配信を照会するには、コンテンツ配信を有効にする必要があります。
- ユーザ (「すべてのデータの参照」権限を持つユーザを含む) は、自分がアクセス権を持つファイルに対してのみクエリを実行できます。このファイルがコンテンツライブラリによって管理されている場合、ユーザは、ライブラリ権限定義で [コンテンツの配信] を有効にしていて、ライブラリのメンバーである必要があります。このファイルがコンテンツライブラリによって管理されていない場合は、ユーザに「Salesforce Files のコンテンツ配信の作成を有効化」権限が必要です。
- ユーザが DistributionPublicUrl および Password 項目を照会できるのは、ユーザがそのファイルの所有者か、そのファイルがユーザと共有されているか、RelatedRecordId にこのユーザがアクセス可能なレコードが指定されている場合のみです。
- 共有ドキュメントを削除すると、関連付けられたすべての ContentDistribution もカスケード削除されます。削除された ContentDistribution は、QueryAll 動詞を使用することで引き続きクエリ可能です。
- 共有ドキュメントがアーカイブされている場合、ユーザが編集できる項目は、ExpiryDate と PreferencesExpires のみです。
- カスタマーポータルユーザはこのオブジェクトにアクセスできません。
- Chatter Free ユーザはこのオブジェクトにアクセスできません。
項目
使用方法
このオブジェクトを使用して、リンク経由または Salesforce CRM Content 配信経由で、外部共有されたドキュメントに関する情報を作成、更新、削除、照会します。
ContentDistribution オブジェクトでは、挿入、更新、削除操作の前後のトリガがサポートされます。さらに、復元後のトリガがサポートされます。
例
マーケティング担当副社長は、ファイル作成者に、作成したファイルをコンテンツ配信を使用して外部ユーザと共有できるかどうかを指定させることを検討しています。また、一部のファイルにはパスワードを設定することも考えています。この場合、ContentVersion オブジェクトにカスタム項目 DeliveryPolicy を追加できます。このカスタム項目を、値 Allowed、Blocked、Password required を持つ選択リストにします。この項目を ContentVersion レイアウトに追加して、ユーザがファイルごとに配信ポリシーを設定できるようにします。次に、ContentDistribution オブジェクト用の挿入トリガを追加して、ファイルに設定された配信ポリシーに基づいてルールを適用します。
次の ContentDistribution オブジェクト用トリガにより、各ファイルの配信ポリシールールが適用されます。
トリガは次のヘルパークラスをコールします。1trigger deliveryPolicy on ContentDistribution (before insert) {
2 for (ContentDistribution cd : trigger.new) {
3 String versionId = DeliveryPolicyHelper.getContentVersionId(cd);
4 ContentVersion version = [select DeliveryPolicy__c from ContentVersion where Id = :versionId];
5 String policy = version.DeliveryPolicy__c;
6 if (policy.equals('Blocked')) {
7 cd.addError('This file is not allowed to be delivered.');
8 } else if (policy.equals('Password required')){
9 if (!DeliveryPolicyHelper.requirePassword(cd)) {
10 cd.addError('To deliver this file, set a password.');
11 }
12 }
13 }
14}1public class DeliveryPolicyHelper {
2 public static String getContentVersionId(ContentDistribution cd) {
3 if (cd.ContentVersionId != null) {
4 return cd.ContentVersionId;
5 } else {
6 String versionId = [select LatestPublishedVersionId from ContentDocument where Id = :cd.ContentDocumentId].get(0).LatestPublishedVersionId;
7 return versionId;
8 }
9 }
10
11 public static boolean requirePassword(ContentDistribution cd) {
12 return cd.PreferencesPasswordRequired;
13 }
14}