Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

データローダを使用して ContentNote オブジェクトにメモをインポート

公開日: Apr 3, 2026
説明


API バージョン 32.0 以降、「ContentNote」オブジェクトの API サポートが追加されました。このオブジェクトには、拡張/リッチテキストの「メモ」機能を使用して作成するレコードが含まれます。リッチテキスト「メモ」機能は、Summer '15 リリースノートで説明されているとおり、Salesforce ユーザインターフェースで正式リリースされました。


リッチテキストメモは Salesforce ユーザインターフェースで作成できます。ただし、ユーザはローカルファイルシステムに保存された従来のメモを Salesforce 組織の「ContentNote」にインポートすることが必要になる場合もあります。 


このようなインポートを実行するには、以下のプロセスを使用して Apex データローダを使用してください。


注意: 「ContentNote」にインポートするには、Chatter と新しいリッチテキスト「メモ」機能の両方を Salesforce 組織で有効にしている必要があります。組織で新しい「メモ」機能を有効化および設定する手順は、「メモ取りツール (メモ) の有効化、およびファイル機能の使用についての考慮事項」を参照してください。

 

 
 
解決策

ステップ 1.CSV ファイルを準備する


Insertする各行の値を対応付ける 2 つの列を持つ CSV ファイルを準備する必要があります。
 
  • Title - メモのタイトル。必須。
  • Content - メモの本文を含むローカルシステム上の .txt または .html ファイルへのパス。  これは、ファイルの「プロパティ」で確認できます。
  • OwnerId - メモ所有者のユーザ ID。これがファイルに含まれない場合、デフォルトでは、所有者はデータの読み込みを実行しているユーザに設定されます。

省略可能な項目: 次の各項目でサポートされるコールと値、および各項目へのアクセスに必要なデータローダ (API) の最小バージョンについての詳細は、SOAP API 開発者ガイドの「ContentNote」を参照してください。
 
  • SharingPrivacy - ファイルの共有プライバシーを制御します。
  • CreatedById - レコードを作成したユーザのユーザ ID。「監査項目の作成」の有効化が必要であり、レコードのInsertでのみ設定または指定できます。
  • CreatedDate - メモの作成日時。正しい形式は、「データローダでサポートされるデータ型」を参照してください。これには、「監査項目の作成」の有効化が必要であり、レコードのInsertでのみ設定または指定できます。
  • LastModifiedById - メモを最後に変更したユーザのユーザ ID。これには、「監査項目の作成」の有効化が必要であり、レコードのInsertでのみ設定または指定できます。
  • LastModifiedDate - メモが最後に変更された日時。これには、「監査項目の作成」の有効化が必要であり、レコードのInsertでのみ設定または指定できます。
 
 
サンプルテーブル:
 
 Title
Content
 Test Note 1
C:\notes\test_note_01.txt
 Test Note 2
C:\notes\test_note_02.html
 Test Note 3
C:\test_note3.txt

注意: MAC では構文が少し異なります。例: /Applications/Data Loader.app/test_note_01.txt
 

サンプル CSV:
Title,Content
Test Note 1,C:\notes\test_note_01.txt
Test Note 2,C:\notes\test_note_02.html
Test Note 3,C:\test_note3.txt
 
注意: 「ContentNote」は Salesforce CRM Content 機能に基づくため、[Content] 列にはローカルファイルへのパスが含まれている必要があります。メモの本文を CSV ファイルに含めることはできません。
 

メモ: Excel の .CSV ファイルにファイルパスを一括でコピーして貼り付ける方法は次のとおりです。

Windows:

  1. ファイルの場所に移動し、メモとしてインポートするすべてのファイルを強調表示します。
  2. 強調表示した状態で shift キーを押しながら右クリックします。
  3. [Copy as Path (パスのコピー)] を選択します (展開された [Home (ホーム)] タブにも [Copy Path (パスのコピー)] が表示されます)。
  4. CTRL + V キーを押して、コピーした項目を Excel に貼り付けます。

MAC:

  1. ファイルの場所に移動し、メモとしてインポートするすべてのファイルを強調表示します。
  2. 右クリックメニューが表示されている状態で、OPTION キーを押すと [Copy (item name) as Pathname ((項目名) のパス名をコピー)] オプションが表示されます。または、Cmd-Opt-C キーを押します。
  3. .csv ファイルにファイルパスを貼り付けます。

 

ステップ 2.「メモ」の本文ファイルをローカルハードドライブで準備する

 
Insertするメモごとに、対応する .txt または .html ファイルがローカルハードドライブ上に存在する必要があります。このファイルにはメモ自体の本文コンテンツが含まれます。このファイルは、ステップ 1 で作成した CSV ファイル内で対応付けられているファイルです。
 
.txt および .html ファイルを「ContentNote」オブジェクトの [Content] 項目にインポートする場合、一部の特殊 HTML 文字はサポートされません。ファイルを正常にインポートするには、インポートの前にこの特殊文字を、サポートされる同等の HTML 文字コードに変換する必要があります。
 
サポートされない文字と、それを置き換える推奨 HTML 文字コードの例を以下に示します。
特殊文字
次の値で置き換え
&
&
<
&lt;
>
&gt;
"
&quot;
'
&#39;
 
 

ステップ 3.データローダで「メモ」をInsertする

 
CSV ファイルを準備し、上述のとおりにファイルをインポートしたら、従来の「メモ」をインポートする準備は完了です。
 
  1. Apex データローダをインストールして起動します。詳細は、「データローダのインストールに関する考慮事項」を参照してください。
  2. [Insert] をクリックします。
  3. ログイン情報を入力します。
  4. [Next] をクリックします。
  5. [Show all Salesforce objects] の横にあるボックスをオンにします。
  6. 使用可能なオブジェクトのリストから [メモ (ContentNote)] を選択します。
  7. [Browse...] をクリックし、ステップ 1 で作成した CSV ファイルを選択します。
  8. [Next] をクリックします。
  9. [Data Selection] 初期化ダイアログが表示されたら、レコード数が正しいことを確認して [OK] をクリックします。
  10. 次の画面で [Create or Edit a Map] をクリックします。
  11. [Auto-Match Fields to Columns] をクリックするか、[Title] および [Content] 項目を CSV ファイルの対応する列に手動で一致させます。  詳細は、「データローダ項目の対応付けの定義」を参照してください。
  12. [OK] をクリックして続行します。
  13. 対応付けが正しいことを確認して [Next] をクリックします。
  14. [Browse...] をクリックし、成功およびエラーファイルの場所を指定します。
  15. [Finish] をクリックします。
  16. 警告を確認し、続行する準備が整ったら [Yes] をクリックします。
 

ステップ 4.データローダを使用して、Insertした「メモ」を親レコードに関連付ける

 
メモをInsertしたら、メモを親レコードに関連付ける必要があります。メモは [Content] に保存されます。これを行うにはレコードを [コンテンツドキュメントリンク] テーブルにInsertする必要があります。
 
  1. [ContentDocumentId][LinkedEntityId][ShareType]、および [Visibility] の列を持つ新しい CSV ファイルを作成します。
  2. 「メモ」のインポート (上記のステップ 3) の成功ログを見つけて、レコードに関連付ける「メモ」の成功ファイルからの [ID] 値を新しいファイルの [ContentDocumentId] 列に入力します。
  3. 「メモ」を関連付けるレコードの ID を [LinkedEntityId] 列に入力します。
  4. 必要に応じて [ShareType] および [Visibility] 項目を設定します。必要に応じて他のレコードでこの手順を繰り返した後、ファイルを保存します。メモ: 標準オブジェクトの値「I」または「V」のみを指定できます。種別「C」はサポートされません。この記事にはInsertファイルの例が添付されています。これらの項目の有効な値とその機能についての詳細は、SOAP API 開発者ガイドの「ContentDocumentLink」セクションを参照してください。
  5. Apex データローダを起動します。
  6. [Insert] をクリックします。
  7. ログイン情報を入力します。
  8. [Next] をクリックします。
  9. [Show all Salesforce objects] の横にあるボックスをオンにします。
  10. 使用可能なオブジェクトのリストから [コンテンツドキュメントリンク (ContentDocumentLink)] を選択します。
  11. [Browse...] をクリックし、前のステップで作成した CSV ファイルを選択します。
  12. [Next] をクリックします。
  13. [Data Selection] 初期化ダイアログが表示されたら、レコード数が正しいことを確認して [OK] をクリックします。
  14. 次の画面で [Create or Edit a Map] をクリックします。
  15. [Auto-Match Fields to Columns] をクリックするか、項目を CSV ファイルの対応する列に手動で一致させます。
  16. [OK] をクリックして続行します。
  17. 対応付けが正しいことを確認して [Next] をクリックします。
  18. [Browse...] をクリックし、成功またはエラーファイルの場所を指定します。
  19. [Finish] をクリックします。
  20. 警告を確認し、続行する準備が整ったら [Yes] をクリックします。この時点で親レコードの下に [メモ] 関連リストが表示されている場合、「メモ」は表示可能になりました。
 

ContentNote のInsertエラーのトラブルシューティングのヒント


ContentNote オブジェクトでは Upsert コールが受け入れられず、サポートもされないため、次のエラーで失敗します

Error while calling web service operation: upsert, error was: UnexpectedErrorFault ApiFault exceptionCode='UNKNOWN_EXCEPTION' with an accompanying ErrorId that may end in '165958568' for example. (次の Web サービス操作のコール中にエラーが発生しました: upsert。エラー: UnexpectedErrorFault ApiFault exceptionCode='UNKNOWN_EXCEPTION'、「165958568」などで終わる ErrorId が付属します)

現在、ContentNote では、「メモ」ファイル自体の解析中に問題が発生した場合、「Note could not be saved (メモを保存できませんでした)」のような汎用エラーが表示されます。多くの場合、これは、特殊文字が適切にエスケープされていないなど、テキスト本文 (コンテンツ) ファイルのコンテンツに問題があることを示します。

2,500 件を超える ContentNote レコードを Sandbox 環境にInsertし、1 日に公開可能なコンテンツバージョンの上限を超えた場合、エラー「Note can't be saved: INVALID_CONTENT_TYPE (メモを保存できませんでした: INVALID_CONTENT_TYPE)」が発生することも知られています。

Sandbox 組織のデフォルト値は 2,500 です。これは、通常、200,000 のデフォルト制限を持つ本番組織と比較して低い値です。.txt または .html ファイルの挿入のコンテンツを検証しても、Sandbox でこのエラーが表示される場合は、上記の制限を増加するように Salesforce サポートに要求してください。
このエラーを解決するには、影響を受けたファイルを特定し、特殊文字を、ステップ 2 で説明されている同等の HTML 文字コードに置き換える必要があります。 
 
Insert内のすべてのファイルに対するエラーがデータローダによって報告され、少なくとも一部のファイルに特殊文字が含まれていないことを調査に基づいて確認できた場合、次の手順に従って、影響を受けたファイルを特定します。
 
  1. データローダのバッチサイズを 1 に設定します。詳細は、「データローダの設定」を参照してください。
  2. 上記のステップ 3 に従って、インポートを再試行します。正常にインポートされたいくつかのファイルが表示される場合があります。
  3. このときにエラーが表示された場合、インポートのエラーファイルを参照し、CSV ファイルのどの行でエラーが発生したかを確認します。
  4. エラーファイルにいずれかの行の「Note could not be saved (メモを保存できませんでした)」エラーが表示されている場合、その行に関連付けられている .txt または .html ファイルを確認し、そのファイル内の特殊文字を、ステップ 2 で説明されている同等の HTML 文字コードに置き換えます。
  5. 他の種類のエラーメッセージがある場合は、そのメッセージも確認して解決します。
「Salesforce ヘルプドキュメントを検索しても回答が見つからない他のエラーの解決方法についてサポートが必要な場合は、Salesforce サポートにケースを登録してください。」
 
これで、上記のステップ 3 に従って、前回のインポートのエラーファイルを CSV インポートファイルとして使用してインポートを再試行できます。詳細は、「HTML タグまたはエスケープされていない文字が含まれるメモを保存できない旨のエラー」を参照してください。
 
エンドユーザがレコードを「ContentNote」オブジェクトに挿入すると、子の「ContentVersion」レコードが自動的に作成されます。詳細は、SOAP API 開発者ガイドの「ContentNote のオブジェクト」セクションを参照してください。
 
エンドユーザが監査項目 (CreatedById、CreatedDate、LastModifiedDate など) を設定している場合、「ContentNotes」をInsertすると、システムは正しい監査項目データを使用して対応する「ContentVersion」レコードを自動的に作成します。ただし、Lightning Experience では、「ContentVersion」の [最終更新日] に「最終更新日」ではなく「作成日」が表示されます。R&D では、今後のリリースで Lightning Experience のこの動作を変更し、「作成日」ではなく「最終更新日」を適切に表示する予定です。

「ContentNote」Insertの実行ユーザ以外のユーザに [OwnerId] を設定した場合、「Documents in a User's private library must always be owned by that User (ユーザの非公開ライブラリ内のドキュメントは常にそのユーザにより所有される必要があります)」エラーが表示されることがあります。これを解決するには、最新バージョンのデータローダを使用して Salesforce に接続していることを確認します。
 


関連情報:
拡張されたメモ取りツール (メモ) の有効化、およびファイルの使用
1 日に公開可能なコンテンツバージョンの上限の拡張
Salesforce Classic でのファイルのアクセス権の変更

サポートの YouTube 動画:

How to Insert the Note via Data Loader (データローダを使用してメモを挿入する方法)
How to Prepare the 'Notes' Body Files on Your Local Hard Drive (メモの本文ファイルをローカルハードドライブで準備する方法)
How to Relate the Inserted 'Note' to a Parent Record with Data Loader (データローダーで挿入されたメモを親レコードに関連付ける方法)
ナレッジ記事番号

000387816

 
読み込み中
Salesforce Help | Article