Массовая загрузка файлов в определенные контакты Salesforce
Мне нужно загрузить около 2000 документов для конкретных пользователей в Salesforce. У меня есть CSV-файл, который имеет ContactID, назначенный Salesforce, а также прямой путь к файлам на моем рабочем столе. URL каждого конкретного контакта был включен в CSV. Как я могу загрузить их все в один и, особенно, на правильный контакт?
2 ответа
Вы указали в комментариях / чате, что вы хотите, чтобы это было "Файлы".
Объект "Файлы" немного сложнее, чем "Вложения", вам нужно будет сделать это за 2-3 шага. То, что вы видите в виде файла (вы можете увидеть его в документации как файлы Chatter или Salesforce Content), на самом деле представляет собой несколько таблиц. Там в
ContentDocument
который может быть своего рода заголовком файла (заголовок, описание, язык, теги, связь со многими другими областями в SF - поскольку он может быть автономным, он может быть загружен в определенную библиотеку содержимого SF, он может быть связан с учетными записями, контактами, $_GOD знает что еще)ContentVersion
что хорошо, фактическая полезная нагрузка. Только самая последняя версия отображается из коробки, но если вы действительно хотите, вы можете вернуться во времени- и больше
Часть дерьма в том, что вы не можете вставить ContentDocument
напрямую (в списке операций нет вызова create()) .
теория
Так что вам понадобится:
- Вставьте ContentVersion (v1 автоматически создаст для вас родительский ContentDocuments... он звучит немного задом наперед, но работает) . После того, как это будет сделано, у вас будет загружена куча автономных документов, но не связанных ни с какими контактами
- Узнать идентификаторы их родительских ContentDocuments
- Вставить
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. Затем для каждого контакта вы увидите, что записи были добавлены в связанный список "Заметки и вложения".