Массовая загрузка файлов в определенные контакты Salesforce

Мне нужно загрузить около 2000 документов для конкретных пользователей в Salesforce. У меня есть CSV-файл, который имеет ContactID, назначенный Salesforce, а также прямой путь к файлам на моем рабочем столе. URL каждого конкретного контакта был включен в CSV. Как я могу загрузить их все в один и, особенно, на правильный контакт?

2 ответа

Решение

Вы указали в комментариях / чате, что вы хотите, чтобы это было "Файлы".

Объект "Файлы" немного сложнее, чем "Вложения", вам нужно будет сделать это за 2-3 шага. То, что вы видите в виде файла (вы можете увидеть его в документации как файлы Chatter или Salesforce Content), на самом деле представляет собой несколько таблиц. Там в

  • ContentDocument который может быть своего рода заголовком файла (заголовок, описание, язык, теги, связь со многими другими областями в SF - поскольку он может быть автономным, он может быть загружен в определенную библиотеку содержимого SF, он может быть связан с учетными записями, контактами, $_GOD знает что еще)
  • ContentVersion что хорошо, фактическая полезная нагрузка. Только самая последняя версия отображается из коробки, но если вы действительно хотите, вы можете вернуться во времени
  • и больше

Часть дерьма в том, что вы не можете вставить ContentDocument напрямую (в списке операций нет вызова create()) .


теория

Так что вам понадобится:

  1. Вставьте ContentVersion (v1 автоматически создаст для вас родительский ContentDocuments... он звучит немного задом наперед, но работает) . После того, как это будет сделано, у вас будет загружена куча автономных документов, но не связанных ни с какими контактами
  2. Узнать идентификаторы их родительских ContentDocuments
  3. Вставить ContentDocumentLink записи, которые будут связывать контакты и их PDF-файлы

практика

Это моя папка C:\stacktest. Он содержит некоторые 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. Найти ContentVersion. Загрузка должна быть простой (если вы сталкиваетесь с проблемами с памятью, установите размер пакета на что-то небольшое, даже по 1 записи за раз, если это действительно необходимо) .

Вы получите "файл успеха", он бесполезен. Нам не нужны идентификаторы сгенерированных версий контента, нам нужны их родители... Запустите "Экспорт" в Data Loader, снова выберите все объекты, выберите 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 или другие подобные вещи, чтобы связать их по названию с контактами. Вы написали, что у вас уже есть файл с идентификаторами контактов и заголовками, так что есть надежда... Создайте такой файл:

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

1-й столбец - это идентификатор файла, затем свяжитесь с идентификатором, затем какая-то черная магия, о которой вы можете прочитать и изменить в случае необходимости ContentDocumentLink Docs.

Загрузите его как вставку (снова показать все объекты) ContentDocumentLink.

Woohoo! Время пива.

Ваш CSV должен содержать следующие поля: - ParentID = Id объекта, с которым вы хотите связать вложение (идентификатор контакта) - Name = имя файла - ContentType = расширение (.xls или.pdf или...) - OwnerId = если пусто, я полагаю, что он принимает вашего пользователя в качестве владельца - body = местоположение на вашем компьютере файла (например: C:\SFDC\Files\test.pdf

Используйте этот CSV для вставки записей (через загрузчик данных) в объект Attachment. Затем для каждого контакта вы увидите, что записи были добавлены в связанный список "Заметки и вложения".

Другие вопросы по тегам