Salesforce ファイルのオブジェクト構成と一括ファイルアップロード

Salesforceのファイルを一括でアップロードしたり、何かしらの操作を加えたい場合があります。

しかしファイル周りのオブジェクトは実はたくさんあって、名称だけ見てもイメージが湧きづらいです。

本記事ではファイル周りのオブジェクト構成や各オブジェクトの役割を整理したうえで、データローダーでSalesforceにファイルを一括アップロードする方法を紹介します。

Salesforceのファイル周りのオブジェクト構成

下図はSalesforceのファイル周りのオブジェクト構成です。コンテンツドキュメントがファイルの状態を表します。コンテンツバージョンはファイルそのものを表します。Salesforceのファイルはリンクを変えずにファイルだけを差し替えることが出来るので、このようにファイルの顔としてのコンテンツドキュメントと、中身を表すコンテンツバージョンに分かれているのですね。

コンテンツドキュメント、コンテンツバージョン、コンテンツドキュメントリンク、ライブラリ、ライブラリドキュメントなど”ファイル”を構成するオブジェクト群のリレーションを図解したもの

コンテンツドキュメント履歴やコンテンツバージョン履歴は、文字通り過去の履歴を管理します。

コンテンツドキュメントリンクはファイルの紐づけ先オブジェクトとの中間オブジェクトです。

ライブラリはコンテンツドキュメントを任意で格納できるフォルダ、ライブラリドキュメントはライブラリとコンテンツドキュメントとの中間オブジェクトです。

より理解を深めるために、各オブジェクトの管理する項目をを詳しく見ていきます。

コンテンツドキュメント

公開状況やコンテンツ更新日など、ファイルの状態を表す項目が並んでいます。コンテンツドキュメントはオブジェクトマネージャーに出てこず、項目は編集したり追加したりすることは出来ませんでした。

コンテンツドキュメントオブジェクトの項目群

コンテンツバージョン

コンテンツバージョンには、サイズや拡張子といったファイルの実体を表す項目が用意されています。

コンテンツバージョンオブジェクトの項目群

コンテンツバージョンは、オブジェクトマネージャーから検索することができ、項目の新規作成も可能でした。

コンテンツバージョンオブジェクトをオブジェクトマネージャーで見てみた図

ファイルの詳細を開いた場合、下図の画面が開きますが、こちらがコンテンツバージョンのページレイアウトと対応しているようです。

コンテンツバージョンを通常のSalesforce画面から見た場合どうやって表示されるのか
コンテンツバージョンのページレイアウト

コンテンツドキュメントリンク

コンテンツドキュメントリンクには、コンテンツドキュメントとリンク先のオブジェクトが入る参照項目があります。

コンテンツドキュメントリンクはオブジェクトマネージャーで出てこず、項目の追加編集も不可となっています。

コンテンツドキュメントリンクを構成する項目群

ライブラリ

ライブラリとは、ファイルをフォルダ管理できる機能です。

ライブラリをSalesforce画面上で見た場合の画面キャプチャ

階層関係も表現できます。

ライブラリの階層構造をSalesforce画面上で見た場合の画面キャプチャ

ライブラリ系のオブジェクトはオブジェクトマネージャーには出てきません。

ライブラリをオブジェクトマネージャーで検索してみた

ライブラリには名前や説明といったフォルダを表す項目が配置されています。

ライブラリを構成する項目群

ライブラリドキュメント

ライブラリドキュメントは、ご覧の通りの中間オブジェクトです。

ライブラリドキュメントを構成する項目群

Salesforceデータローダーで画像やPDFファイルを一括アップロードする方法

全体の流れとしては、Salesforceデータローダを使用して、ローカルPCからファイルへのパスを指定することで一括アップロードする形となります。

データローダでコンテンツバージョン(ファイルの実体)にファイルをアップロードし、その後コンテンツドキュメントリンク(ファイル紐づけ先とファイルとの中間オブジェクト)を介して他のレコードに関連付ける流れです。

データローダーの使い方はこちらで詳しく紹介しています。

1. CSVファイルの準備

まず、ファイルアップロードに必要なデータをCSV形式で準備します。このファイルには、Content Versionオブジェクトにインサートするために必要な項目が含まれている必要があります。

  • Title: ファイル名
  • VersionData: アップロードするファイルへの完全なパス(例:C:\Users\username\Documents\example.pdf
  • PathOnClient: 同じくアップロードするファイルへの完全なパス

注意: 完全なパスとは、システムの最上階層から特定のファイルまでのパスを指します。VersionDataPathOnClientには同じ値を入力してください。

TitleVersionDataPathOnClient
ファイル名を記入C:\Users\username\Documents\example.pdfC:\Users\username\Documents\example.pdf

ファイルへのパスは、下図のようにファイルを一括選択し、右クリック、パスのコピーをクリックすると、まとめてコピーできます。

パスを一括コピーする方法

2. データローダを使ってContent Versionにファイルをアップロードする

次に、データローダを起動し、Content Versionオブジェクトにファイルをインサートします。

  1. データローダを起動し、[Insert]を選択します。
  2. Content Versionオブジェクトを選択し、準備したCSVファイルを選択します。
  3. 項目のマッピング画面が表示されるので、CSVファイル内の項目をContent Versionオブジェクトの適切な項目にマッピングします。
  4. [Finish]を押して、ファイルのアップロードを開始します。

データローダーのマッピング画面では、以下のようにマップします。

CSV Column HeaderSalesforce Object Field Name
TITLETitle
VERSIONDATAVersionData
PATHONCLIENTPathOnClient

3.関連レコードにファイルを紐づける手順

アップロードしたファイルを特定のレコード(例:商談や取引先責任者)に関連付けて表示するためには、コンテンツドキュメントリンクのレコードを作成する必要があります。

1. コンテンツバージョン(ファイルの実体)の情報を取得

コンテンツバージョンオブジェクトにインサートされたファイルの情報を取得するために、データローダの[Export]機能を使用します。

データローダで[Export]を選択し、コンテンツバージョンオブジェクトから必要な情報を取得します。コンテンツドキュメントID、タイトル、作成日などを取得します。

※エクスポート時にフィルタ条件として、ファイルがアップロードされた日付を指定することができます。

2. CSVファイルの準備(コンテンツドキュメントリンクの登録)

次に、取得した情報を基に、コンテンツドキュメントリンクオブジェクトにレコードをインサートするためのCSVファイルを作成します。

  • LinkedEntityID: ファイルを関連付ける対象のレコードID(例:商談や取引先責任者のID)
  • ContentDocumentID: データローダーのエクスポートで取得したコンテンツドキュメントID
  • ShareType: ファイルへのアクセス権限(V: 表示可能, C: 表示/編集可能, I: 関連するレコードに基づく権限)
  • Visibility: ファイルを利用可能なユーザーの範囲(AllUsers, InternalUsers, SharedUsers
    • AllUsers: 全てのユーザーがファイルを利用可能
    • InternalUsers: 内部ユーザーのみ利用可能
    • SharedUsers: ファイルが投稿されたフィードを見られるユーザーが利用可能

CSVファイルの例:

LinkedEntityIDContentDocumentIDShareTypeVisibility
001XXXXXXXXXXXXXXX069XXXXXXXXXXXXXXXVInternalUsers

3. データローダでContent Document Linkにインサート

最後に、データローダーを使用してContent Document Linkオブジェクトにファイル情報を登録します。

  1. データローダを起動し、[Insert]を選択します。
  2. Content Document Linkオブジェクトを選択し、先ほど準備したCSVファイルを選択します。
  3. 項目を適切にマッピングし、[Finish]を押して登録を完了します。

以上、ファイル周りのオブジェクト構成と、データローダーでの一括ファイルアップロード方法を紹介しました。

他にもファイルストレージ容量の確認方法や、ファイルの一括ダウンロード方法ファイルの外部公開についても紹介していますので、もし関心があればぜひご覧ください。