批量上传文件至特定联系人 Salesforce

Mass Upload Files To Specific Contacts Salesforce

我需要将大约 2000 个文档上传到 salesforce 中的特定用户。我有一个 csv 文件,其中包含 Salesforce 分配的 ContactID,以及我桌面上文件的直接路径。每个联系人的特定文件 url 已包含在 csv 中。我怎样才能将它们全部上传,尤其是上传到正确的联系人?

您的 CSV 应包含以下字段: - ParentID = 您想要 link 附件的对象的 ID(联系人的 ID) - 名称 = 文件名 - ContentType = 扩展名(.xls 或 .pdf 或 ...) - OwnerId = 如果为空我相信它将您的用户作为所有者 - body = 文件在您机器上的位置(例如:C:\SFDC\Files\test.pdf

使用此 csv 将记录(通过数据加载器)插入附件对象。 然后您将看到每个联系人的记录已添加到 'Notes & Attachments' 相关列表。

您在评论/聊天中表示您想要它 "Files"。

"Files" object 比附件复杂一点,您需要分 2-3 步完成。您看到的文件(您可能会在文档中看到它被称为 Chatter 文件或 Salesforce 内容)实际上是几个表格。有

  • ContentDocument 可以是一种文件 header(标题、描述、语言、标签、linkSF 中许多其他区域的年龄 - 因为它可以独立,它可以上传到某些 SF 内容库,它可以 linked 到帐户,联系人,$_GOD 知道还有什么)
  • ContentVersion 这很好,实际有效负载。开箱即用仅显示最新版本,但如果您真的想要,可以及时返回
  • 以及更多

糟糕的部分是您不能直接插入 ContentDocument(操作列表中没有 create() 调用)。


理论

所以你需要:

  1. 插入 ContentVersion(v1 会自动为您创建 parent ContentDocuments...听起来有点 ass-backwards 但它有效)。完成此操作后,您将加载一堆独立文档,但不会 linked 到任何 Contacts
  2. 了解他们的 parent ContentDocuments
  3. 的 ID
  4. 插入 ContentDocumentLink 条将连接联系人及其 PDF 的记录

练习

这是我的 C:\stacktest 文件夹。它包含一些 SF 作弊 sheet PDF。

这是我加载第 1 部分的文件

Title   PathOnClient    VersionData
"Lightning Components CheatSheet"   "C:\stacktest\SF_LightningComponents_cheatsheet_web.pdf"    "C:\stacktest\SF_LightningComponents_cheatsheet_web.pdf"
"Process Automation CheatSheet" "C:\stacktest\SF_Process_Automation_cheatsheet_web.pdf" "C:\stacktest\SF_Process_Automation_cheatsheet_web.pdf"
"Admin CheatSheet"  "C:\stacktest\SF_S1-Admin_cheatsheet_web.pdf"   "C:\stacktest\SF_S1-Admin_cheatsheet_web.pdf"
"S1 CheatSheet" "C:\stacktest\SF_S1-Developer_cheatsheet_web.pdf"   "C:\stacktest\SF_S1-Developer_cheatsheet_web.pdf"

Fire Data Loader,select 插入,select 显示所有 Salesforce object。查找内容版本。加载应该很简单(如果遇到内存问题,请将批处理大小设置为较低的值,如果确实需要,一次甚至可以设置 1 条记录)。

你会得到一个"success file",没用。我们不需要生成的内容版本的 ID,我们需要它们的 parents... 在 Data Loader 中启动 "Export",再次选择所有 objects,选择 ContentDocument。使用与此类似的查询:

Select Id, Title, FileType, FileExtension
FROM ContentDocument
WHERE CreatedDate = TODAY AND CreatedBy.FirstName = 'Ethan'

你应该看到这样的东西:

"ID","TITLE","FILETYPE","FILEEXTENSION"
"0690g0000048G2MAAU","Lightning Components CheatSheet","PDF","pdf"
"0690g0000048G2NAAU","Process Automation CheatSheet","PDF","pdf"
"0690g0000048G2OAAU","Admin CheatSheet","PDF","pdf"
"0690g0000048G2PAAU","S1 CheatSheet","PDF","pdf"

使用 Excel 和 VLOOKUP 的魔法或其他类似的东西 link 将它们按标题返回到联系人。你写道你已经有一个包含联系人 ID 和标题的文件所以有希望......创建一个这样的文件:

ContentDocumentId   LinkedEntityId  ShareType   Visibility 
0690g0000048G2MAAU  0037000000TWREI V   InternalUsers
0690g0000048G2NAAU  0030g000027rQ3z V   InternalUsers
0690g0000048G2OAAU  0030g000027rQ3a V   InternalUsers
0690g0000048G2PAAU  0030g000027rPz4 V   InternalUsers

第一列是文件 ID,然后是联系人 ID,然后是一些黑魔法,如果需要,您可以在 ContentDocumentLink 文档中阅读和更改。

将其作为插入内容加载到(再次显示所有 objects)ContentDocumentLink。

哇哦!啤酒时间。