代码之家  ›  专栏  ›  技术社区  ›  Ethan

将文件批量上载到特定联系人Salesforce

  •  1
  • Ethan  · 技术社区  · 7 年前

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

    2 回复  |  直到 7 年前
        1
  •  5
  •   eyescream    7 年前

    您在评论/聊天中表示希望将其作为“文件”。

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

    • ContentDocument 它可以是一种文件头(标题、描述、语言、标记、到SF中许多其他区域的链接-因为它可以是独立的,可以上载到特定的SF内容库,可以链接到帐户、联系人、$\u天知道还有什么)
    • ContentVersion 这就是实际有效载荷。只显示最新版本,但如果您确实需要,可以及时返回
    • 还有更多

    糟糕的是你不能插入 内容文档 直接(操作列表中没有create()调用)。


    学说

    因此,您需要:

    1. 插入ContentVersion(v1将自动为您创建父ContentDocuments…它听起来有点落后,但它可以工作)。完成后,您将加载一组独立文档,但不会链接到任何联系人
    2. 了解其父ContentDocuments的ID
    3. 插入 ContentDocumentLink 连接联系人及其PDF的记录

    实践

    这是我的C:\stacktest文件夹。它包含一些SF备忘单PDF。

    enter image description here

    这是我第一部分的文件

    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"
    

    启动数据加载程序,选择“插入”,选择“显示所有Salesforce对象”。查找ContentVersion。加载应该很简单(如果遇到内存问题,请将批大小设置为较低的值,如果确实需要,甚至可以一次加载一条记录)。

    你会得到一个“成功文件”,它是无用的。我们不需要生成内容版本的ID,我们需要它们的父版本。。。在数据加载器中启动“导出”,再次选择所有对象,选择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的魔力或其他类似的东西,通过标题将它们链接回联系人。你写道你已经有了一个带有联系人ID和标题的文件,所以希望。。。创建如下文件:

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

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

    将其加载为插入到(再次显示所有对象)ContentDocumentLink。

    呜呜!啤酒时间。

    enter image description here

    enter image description here

        2
  •  0
  •   bartvd    7 年前

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

    使用此csv将记录(通过数据加载器)插入附件对象。 然后,您将看到每个联系人的记录都已添加到“备注和”;附件相关列表。

    推荐文章