【问题标题】:Mass Upload Files To Specific Contacts Salesforce将文件批量上传到特定联系人 Salesforce
【发布时间】:2018-02-06 05:08:40
【问题描述】:

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

【问题讨论】:

  • 你在纠结什么?看起来你走在好的路上。检查help.salesforce.com/…developer.salesforce.com/forums/?id=906F00000008ysmIAA。您想将它们作为附件加载吗?聊天文件?还有什么?
  • @eyescream ParentID 和 OwnerID 之间的区别,我假设我的 ParentID 应该是每个文件应该添加到的特定联系人, OwnerID 是导入文件的 Salesforce 用户的 ID?
  • 没错。 ParentId 将是您正在加载的父记录(帐户、联系人、自定义对象...)。所有者可以设置或留空,在这种情况下,它将是“用户用于通过数据加载器或任何其他方式加载此数据”检查developer.salesforce.com/docs/atlas.en-us.api.meta/api/…的字段描述例如
  • @eyescream 太棒了!我现在正在尝试上传东西,但无论我做什么都会出错。大约有 2000 个文档需要上传并作为附件添加到各自的联系人。我已启用批量 api 并确保所有内容都正确映射。我遇到了“Java 堆空间”错误以及其他问题。我们可以在聊天中继续这个对话吗?
  • 对不起,今天没时间。如果还没有解决,明天同一时间戳我?您可以尝试更改数据加载器的设置,设置批处理大小 = 1。它会一次加载 1 条记录,这需要一段时间,但由于最大文件大小无论如何都是 25 MB (help.salesforce.com/…),它应该有助于内存限制。不确定批量 api 对您有多大帮助,也可以尝试使用普通 (SOAP) API。

标签: csv salesforce apex-data-loader


【解决方案1】:

您在 cmets / chat 中表明您希望它作为“文件”。

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

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

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


理论

所以你需要:

  1. 插入 ContentVersion(v1 将自动为您创建父 ContentDocuments...它听起来有点向后,但它确实有效)。完成此操作后,您将加载一堆独立文档,但未链接到任何联系人
  2. 了解其父 ContentDocument 的 ID
  3. 插入将连接联系人及其 PDF 的 ContentDocumentLink 记录

练习

这是我的 C:\stacktest 文件夹。它包含一些 SF 备忘单 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,选择插入,选择显示所有 Salesforce 对象。查找内容版本。加载应该很简单(如果您遇到内存问题,请将批量大小设置为较低的值,如果确实需要,甚至一次记录 1 条记录)。

你会得到一个“成功文件”,它没用。我们不需要生成的内容版本的 ID,我们需要它们的父级... 在 Data Loader 中触发“Export”,再次选择所有对象,然后选择 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 docs 中阅读和更改。

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

哇哦!啤酒时间。

【讨论】:

  • 现在试试这个!如果它有效,我当然欠你一杯啤酒。
  • 成功了!可见性有点不稳定,所以我只是删除了它并取消了默认值,根据我在文档中的理解,它是相同的。检查聊天
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多