Salesforceのファイルを一括でアップロードしたり、何かしらの操作を加えたい場合があります。
しかしファイル周りのオブジェクトは実はたくさんあって、名称だけ見てもイメージが湧きづらいです。
本記事ではファイル周りのオブジェクト構成や各オブジェクトの役割を整理したうえで、データローダーでSalesforceにファイルを一括アップロードする方法を紹介します。
Salesforceのファイル周りのオブジェクト構成
下図はSalesforceのファイル周りのオブジェクト構成です。コンテンツドキュメントがファイルの状態を表します。コンテンツバージョンはファイルそのものを表します。Salesforceのファイルはリンクを変えずにファイルだけを差し替えることが出来るので、このようにファイルの顔としてのコンテンツドキュメントと、中身を表すコンテンツバージョンに分かれているのですね。
コンテンツドキュメント履歴やコンテンツバージョン履歴は、文字通り過去の履歴を管理します。
コンテンツドキュメントリンクはファイルの紐づけ先オブジェクトとの中間オブジェクトです。
ライブラリはコンテンツドキュメントを任意で格納できるフォルダ、ライブラリドキュメントはライブラリとコンテンツドキュメントとの中間オブジェクトです。
より理解を深めるために、各オブジェクトの管理する項目をを詳しく見ていきます。
コンテンツドキュメント
公開状況やコンテンツ更新日など、ファイルの状態を表す項目が並んでいます。コンテンツドキュメントはオブジェクトマネージャーに出てこず、項目は編集したり追加したりすることは出来ませんでした。
コンテンツバージョン
コンテンツバージョンには、サイズや拡張子といったファイルの実体を表す項目が用意されています。
コンテンツバージョンは、オブジェクトマネージャーから検索することができ、項目の新規作成も可能でした。
ファイルの詳細を開いた場合、下図の画面が開きますが、こちらがコンテンツバージョンのページレイアウトと対応しているようです。
コンテンツドキュメントリンク
コンテンツドキュメントリンクには、コンテンツドキュメントとリンク先のオブジェクトが入る参照項目があります。
コンテンツドキュメントリンクはオブジェクトマネージャーで出てこず、項目の追加編集も不可となっています。
ライブラリ
ライブラリとは、ファイルをフォルダ管理できる機能です。
階層関係も表現できます。
ライブラリ系のオブジェクトはオブジェクトマネージャーには出てきません。
ライブラリには名前や説明といったフォルダを表す項目が配置されています。
ライブラリドキュメント
ライブラリドキュメントは、ご覧の通りの中間オブジェクトです。
Salesforceデータローダーで画像やPDFファイルを一括アップロードする方法
全体の流れとしては、Salesforceデータローダを使用して、ローカルPCからファイルへのパスを指定することで一括アップロードする形となります。
データローダでコンテンツバージョン(ファイルの実体)にファイルをアップロードし、その後コンテンツドキュメントリンク(ファイル紐づけ先とファイルとの中間オブジェクト)を介して他のレコードに関連付ける流れです。
データローダーの使い方はこちらで詳しく紹介しています。
1. CSVファイルの準備
まず、ファイルアップロードに必要なデータをCSV形式で準備します。このファイルには、Content Versionオブジェクトにインサートするために必要な項目が含まれている必要があります。
- Title: ファイル名
- VersionData: アップロードするファイルへの完全なパス(例:
C:\Users\username\Documents\example.pdf
) - PathOnClient: 同じくアップロードするファイルへの完全なパス
注意: 完全なパスとは、システムの最上階層から特定のファイルまでのパスを指します。VersionData
とPathOnClient
には同じ値を入力してください。
Title | VersionData | PathOnClient |
---|---|---|
ファイル名を記入 | C:\Users\username\Documents\example.pdf | C:\Users\username\Documents\example.pdf |
ファイルへのパスは、下図のようにファイルを一括選択し、右クリック、パスのコピーをクリックすると、まとめてコピーできます。
2. データローダを使ってContent Versionにファイルをアップロードする
次に、データローダを起動し、Content Versionオブジェクトにファイルをインサートします。
- データローダを起動し、[Insert]を選択します。
- Content Versionオブジェクトを選択し、準備したCSVファイルを選択します。
- 項目のマッピング画面が表示されるので、CSVファイル内の項目をContent Versionオブジェクトの適切な項目にマッピングします。
- [Finish]を押して、ファイルのアップロードを開始します。
データローダーのマッピング画面では、以下のようにマップします。
CSV Column Header | Salesforce Object Field Name |
---|---|
TITLE | Title |
VERSIONDATA | VersionData |
PATHONCLIENT | PathOnClient |
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ファイルの例:
LinkedEntityID | ContentDocumentID | ShareType | Visibility |
---|---|---|---|
001XXXXXXXXXXXXXXX | 069XXXXXXXXXXXXXXX | V | InternalUsers |
3. データローダでContent Document Linkにインサート
最後に、データローダーを使用してContent Document Linkオブジェクトにファイル情報を登録します。
- データローダを起動し、[Insert]を選択します。
- Content Document Linkオブジェクトを選択し、先ほど準備したCSVファイルを選択します。
- 項目を適切にマッピングし、[Finish]を押して登録を完了します。
以上、ファイル周りのオブジェクト構成と、データローダーでの一括ファイルアップロード方法を紹介しました。
他にもファイルストレージ容量の確認方法や、ファイルの一括ダウンロード方法、ファイルの外部公開についても紹介していますので、もし関心があればぜひご覧ください。